(i) 수집 및 컬렉션
둘 다 Java.util 패키지 아래에 있으며 차이점은 다음과 같습니다.
Collection은 ListSet과 같은 공통 서브 인터페이스가있는 컬렉션 인터페이스이며 Collection Framework 그래프의 첫 번째 노드입니다. 수집 객체에서 기본 작업을 수행하기위한 일련의 방법을 제공합니다.
일반적인 방법은 다음과 같습니다.
부울 추가 (e e) 컨테이너에 요소를 추가합니다. int size ()는 컬렉션의 요소 수를 반환합니다. 부울 isempty ()는 컨테이너가 비어 있는지 여부를 결정합니다. 부울은이 컬렉션에 지정된 요소가 포함 된 경우 (Object O)가 포함되어 있으면 true를 반환하고 equals () 메소드가 여기에서 사용됩니다. 부울 제거 (오브젝트 O) 지정된 요소의 인스턴스를 제거합니다. 등.
컬렉션은 수집 작업을위한 다양한 정적 다형성 방법을 포함하는 래퍼 클래스로, 수집시 작동하는 다형성 알고리즘, 즉 "Wrapper"와 같은 몇 가지 컬렉션 및 기타 몇 가지 사항을 반환합니다.
일반적인 방법은 다음과 같습니다.
무효 정렬 (목록) 목록의 내용을 정렬합니다.
여기에서 (PS : Sort ()에 대한 다음 설명은 객체 배열 또는 목록 정렬 및 수집 분류 원칙에 대한 간단한 토론 에서 발췌 한 것입니다. 목록 및 수집 분류의 기원을 추적하고 매우 명확하게 씁니다).
이 정렬 () 함수의 정렬 본문은 arrays.sort ()입니다.
@suppresswarnings ( "확인되지 않은") public static <t는 비슷한 <? super t >> void sort (list <t> list) {object [] array = list.toarray (); Array.SORT (배열); int i = 0; Listiterator <t> it = list.listiterator (); while (it.hasnext ()) {it.next (); it.set ((t) 배열 [i ++]); }} Arrays.sort ()에서는 compartabletimsort.sort (Object [] a)를 통해 구현된다는 것을 알 수 있습니다. public static void sort (Object [] array) {// 시작 Android 변경 CAMPARIBEDIMSORT.SORT (Array); // 엔드 안드로이드 변화} 정적 무효 정렬 (Object [] a) - 정적 무효 정렬 (개체 [] a, int lo, int hi)에서 개인 정적 void binarysort (object [] a, int lo, int hi, int start). 바이너리 소트에서 크기 비교에 사용되는 부분은 다음과 같습니다. 비슷한 <bood> pivot = (비교) a [시작]; int left = lo; int right = start; 왼쪽 <= 오른쪽; while (왼쪽 <오른쪽) {int mid = (왼쪽 + 오른쪽) >>> 1; if (pivot.compareto (a [mid]) <0) right = mid; 그렇지 않으면 왼쪽 = 중간 + 1; }비슷한 인터페이스의 유일한 방법은 이진 검색에서 사용됩니다 : compareto (). 모든 사용자 정의 클래스가 컨테이너에로드되어 비교 해야하는 경우 비교 가능한 인터페이스를 구현하거나 비교기 클래스를 상속하고 비교 () 메소드를 무시해야합니다.
int binarysearch (목록 개체) 순차적 목록 컨테이너의 경우 반 찾기 방법은 지정된 객체를 찾는 데 사용됩니다. void Reverse (list)는 목록 컨테이너의 객체를 역 순서로 배열합니다. 등.
(ii) 반복자 및 반복 가능한
먼저 반복 가능한 것은 java.lang 패키지 아래에 있으며 반복기는 java.util 패키지 아래에 있습니다. 컬렉션 프레임 워크에서, 반복자 인터페이스에 세 가지 방법이 정의되어 있습니다 : boolean hasnext (); e next (); void remove (). 반복 가능 하나만 정의합니다. iterator (), 리턴 값은 반복자 인터페이스를 구현하는 객체입니다. 컬렉션은 반복 가능의 수퍼 인터페이스를 상속하므로 컬렉션 프레임 워크의 모든 구현 클래스는 iterator () 메소드를 가지며 다형성은 반복자를 구현하는 현재 컬렉션에서 반복기의 참조 (즉, 세 가지 메소드)에 액세스 할 수 있습니다. 이 시점에서 요소를 삭제 해야하는 경우, ITERATOR 가이 컬렉션 작업에서 잠금을 완료하므로 ITERATOR를 사용하여 루프 트래버살 중에 반대기의 remove () 메소드 만 사용할 수 있으며 컬렉션의 자체 remain (Object) 메소드를 사용할 수 없습니다.
그렇다면 왜 반복 가능한 인터페이스를 구현해야합니까? 반복자 인터페이스를 직접 구현하지 않는 이유는 무엇입니까? 이렇게하면 컬렉션 클래스 가이 세 가지 방법을 직접 상속받을 수 있습니까?
반복 가능한 인터페이스를 구현하는 목록 패밀리 또는 세트 패밀리와 같은 JDK의 컬렉션 클래스를 살펴보십시오. 그러나 반복자 인터페이스를 직접 구현하지는 않습니다.
그것에 대해주의 깊게 생각하고 이해하십시오.
반복자 인터페이스의 핵심 메소드는 다음 () 또는 hasnext ()는 반복자의 현재 반복 위치에 의존하기 때문입니다.
컬렉션이 반복자 인터페이스를 직접 구현하면 필연적으로 현재 반복 위치의 데이터 (포인터)가 포함 된 컬렉션 객체로 연결됩니다.
컬렉션이 다른 방법 사이에 전달되면, 현재 반복 위치가 사전 설정되지 않기 때문에 다음 () 메소드의 결과는 예측할 수 없게됩니다.
Reset () 메소드가 반복자 인터페이스에 추가되어 현재 반복 위치를 재설정하지 않는 한.
그러나이 경우 컬렉션에는 동시에 하나의 현재 반복 위치 만 가질 수 있습니다.
반복적 인 경우는 그렇지 않으며 각 통화는 반복자를 처음부터 반환합니다.
여러 반복자는 서로를 방해하지 않습니다.
위의 기사는 Java 컬렉션의 혼란스러운 지식 포인트 (자세한 설명)를 기반으로합니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.