컬렉션 인터페이스는 목록, 벡터, 스택, 큐, 우선순위 큐 및 세트에 대한 일반적인 작업을 정의합니다.
Java 컬렉션 프레임워크는 두 가지 유형의 컨테이너를 지원합니다.
맵은 키를 사용하여 요소를 빠르게 검색할 수 있는 효율적인 데이터 구조입니다. 다음 컬렉션은 다음과 같습니다.
이러한 컬렉션의 공통 기능은 인터페이스에 정의되어 있으며 구현은 아래 그림과 같이 구체적인 클래스로 제공됩니다.
Java Collections Framework에 정의된 모든 인터페이스와 클래스는 java.util 패키지에 그룹화되어 있습니다.
Java 컬렉션 프레임워크의 디자인은 인터페이스, 추상 클래스 및 구체적인 클래스를 사용하는 훌륭한 예입니다. 인터페이스는 프레임워크를 정의합니다. 추상 클래스는 부분 구현을 제공합니다. 구체적인 클래스는 구체적인 데이터 구조로 인터페이스를 구현합니다. 인터페이스를 부분적으로 구현하는 추상 클래스를 제공하면 사용자가 코드를 작성하기가 편리합니다. 사용자는 인터페이스의 모든 메소드를 구현하는 대신 추상 클래스를 확장하는 구체적인 클래스를 간단히 정의할 수 있습니다. 편의를 위해 AbstractCollection 등의 추상 클래스를 제공합니다. 이런 이유로 편의 추상 클래스라고 부릅니다.
컬렉션 인터페이스는 객체 컬렉션을 조작하기 위한 루트 인터페이스입니다. 공개 메소드는 아래 그림에 나열되어 있습니다. AbstractCollection 클래스는 Collection 인터페이스에 대한 부분 구현을 제공합니다. add, size 및 iterator 메서드를 제외한 Collection의 모든 메서드를 구현합니다. 이는 적절한 구체적인 하위 클래스에서 구현됩니다.
컬렉션 인터페이스는 컬렉션에 요소를 추가하고 제거하기 위한 기본 작업을 제공합니다. add 메소드는 컬렉션에 요소를 추가합니다. addAll 메소드는 지정된 컬렉션의 모든 요소를 이 컬렉션에 추가합니다. remove 메소드는 컬렉션에서 요소를 제거합니다. removeAll 메소드는 지정된 컬렉션에 존재하는 요소를 이 컬렉션에서 제거합니다. retainAll 메소드는 지정된 컬렉션에도 존재하는 요소를 이 컬렉션에 유지합니다. 이 모든 메소드는 부울을 반환합니다. 메소드 실행의 결과로 컬렉션이 변경된 경우 반환 값은 true입니다. clear() 메소드는 단순히 컬렉션의 모든 요소를 제거합니다.
addAll, removeAll 및 retainAll 메소드는 합집합, 차이 및 교차 연산과 유사합니다.
컬렉션 인터페이스는 다양한 쿼리 작업을 제공합니다. size 메서드는 컬렉션의 요소 수를 반환합니다. contains 메소드는 컬렉션에 지정된 요소가 포함되어 있는지 확인합니다. containsAll 메서드는 컬렉션에 지정된 컬렉션의 모든 요소가 포함되어 있는지 확인합니다. 컬렉션이 비어 있으면 isEmpty 메서드는 true를 반환합니다.
Collection 인터페이스는 컬렉션에 대한 배열 표현을 반환하는 toArray() 메서드를 제공합니다.
Collection 인터페이스의 일부 메서드는 구체적인 하위 클래스에서 구현할 수 없습니다. 이 경우 메소드는 RuntimeException의 하위 클래스인 java.lang.UnsupportedOperationException을 발생시킵니다. 프로젝트에 활용하기 좋은 디자인입니다. 서브클래스에서 메소드가 의미가 없는 경우 다음과 같이 구현할 수 있습니다.
공용 무효 someMethod() {
새로운 UnsupportedOperationException 발생
("지원되지 않는 방법");
}
아래 코드는 Collection 인터페이스에 정의된 메소드를 사용하는 예를 제공합니다.
package demo; import java.util.*; public class TestCollection { public static void main(String[] args) { ArrayList<String> collection1 = new ArrayList<>(); collection1.add("New York"); collection1.add("Atlanta"); collection1.add("Dallas"); collection1.add("Madison"); System.out.println("A list of cities in collection1:"); System.out.println(collection1); System.out.println("\nIs Dallas in collection1? " + collection1.contains("Dallas")); collection1.remove("Dallas"); System.out.println("\n" + collection1.size() + " cities are in collection1 now"); Collection<String> collection2 = new ArrayList<>(); collection2.add("Seattle"); collection2.add("Portland"); collection2.add("Los Angeles"); collection2.add("Atlanta"); System.out.println("\nA list of cities in collection2:"); System.out.println(collection2); ArrayList<String> c1 = (ArrayList<String>)(collection1.clone()); c1.addAll(collection2); System.out.println("\nCities in collection1 or collection2: "); System.out.println(c1); c1 = (ArrayList<String>)(collection1.clone()); c1.retainAll(collection2); System.out.print("\nCities in collection1 and collection2: "); System.out.println(c1); c1 = (ArrayList<String>)(collection1.clone()); c1.removeAll(collection2); System.out.print("\nCities in collection1, but not in 2: "); System.out.println(c1); } }
컬렉션1에 있는 도시 목록:
[뉴욕, 애틀랜타, 댈러스, 매디슨]
달라스가 collection1에 있나요? 사실
현재 3개 도시가 컬렉션1에 있습니다
collection2의 도시 목록:
[시애틀, 포틀랜드, 로스앤젤레스, 애틀랜타]
컬렉션1 또는 컬렉션2의 도시:
[뉴욕, 애틀랜타, 매디슨, 시애틀, 포틀랜드, 로스앤젤레스, 애틀랜타]
collection1 및 collection2의 도시: [애틀랜타]
컬렉션1에는 포함되어 있지만 2에는 포함되지 않은 도시: [뉴욕, 매디슨]
프로그램은 ArrayList(7행)를 사용하여 구체적인 컬렉션 객체를 생성하고 Collection 인터페이스의 contains 메소드(16행)를 호출합니다. Remove 메소드(18행), size 메소드(19행), addAll 메소드(31행), retainAll 메소드(36행) 및 removeAll 메소드(41행).
이 예에서는 ArrayList를 사용합니다. HashSet, LinkedList, Vector 및 Stack과 같은 Collection의 구체적인 클래스를 사용하여 교체할 수 있습니다. ArrayList는 Collection 인터페이스에 정의된 이러한 메서드를 테스트합니다.
프로그램은 배열 목록의 복사본을 생성합니다(30, 35, 40행). 이 작업의 목적은 원본 배열 목록을 그대로 유지하고 해당 복사본을 사용하여 addAll, retainAll 및 removeAll 작업
을 수행하는 것입니다.Java Collections Framework의 모든 구체적인 클래스는 java.util.PriorityQueuejava.lang.Cloneable 및 java.io.Serialized 인터페이스를 구현합니다. >는 Cloneable 인터페이스를 구현하지 않습니다. 따라서 우선순위 큐를 제외한 모든 Cloneable 인스턴스를 Clone할 수 있으며, Cloneable 모든 인스턴스를 Serialize할 수 있습니다.
위 내용은 컬렉션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!