Collection Interface
Java의 Collection 인터페이스는 컬렉션 프레임워크의 루트 인터페이스로, 다양한 데이터 구조를 표현하는 공통된 메서드를 정의합니다. 이 인터페이스는 여러 컬렉션 클래스를 위한 공통된 동작을 제공하며, 컬렉션을 조작하는 메서드를 정의합니다.
주요 메서드
Collection 인터페이스에서 제공하는 주요 메서드는 다음과 같습니다.
- 크기 관련 메서드
- int size(): 컬렉션에 포함된 요소의 수를 반환합니다.
- boolean isEmpty(): 컬렉션이 비어 있는지 여부를 반환합니다.
- 추가 및 제거
- boolean add(E e): 지정된 요소를 컬렉션에 추가합니다.
- boolean remove(Object o): 지정된 요소를 컬렉션에서 제거합니다.
- boolean addAll(Collection<? extends E> c): 지정된 컬렉션의 모든 요소를 이 컬렉션에 추가합니다.
- boolean removeAll(Collection<?> c): 지정된 컬렉션에 포함된 이 컬렉션의 모든 요소를 제거합니다.
- boolean retainAll(Collection<?> c): 이 컬렉션에서 지정된 컬렉션에 포함된 요소만 유지하고 다른 모든 요소를 제거합니다.
- void clear(): 컬렉션의 모든 요소를 제거합니다.
- 탐색 및 검사
- boolean contains(Object o): 지정된 요소가 이 컬렉션에 포함되어 있는지 여부를 반환합니다.
- boolean containsAll(Collection<?> c): 지정된 컬렉션의 모든 요소가 이 컬렉션에 포함되어 있는지 여부를 반환합니다.
- Iterator<E> iterator(): 이 컬렉션의 요소에 대해 반복을 수행하는 반복자를 반환합니다.
- 배열로 변환
- Object[ ] toArray( ): 컬렉션의 모든 요소를 포함하는 배열을 반환합니다.
- <T> T[ ] toArray(T[ ] a): 지정된 배열에 컬렉션의 모든 요소를 저장합니다.
구현 클래스
Collection 인터페이스를 직접 구현하는 클래스는 없으며, 이를 상속하는 몇 가지 서브 인터페이스와 해당 서브 인터페이스를 구현하는 클래스들이 있습니다.
서브 인터페이스
- List
- 순서가 있는 컬렉션으로, 요소의 중복을 허용합니다.
- 구현 클래스: ArrayList, LinkedList, Vector, Stack
- Set
- 중복을 허용하지 않는 컬렉션입니다.
- 구현 클래스: HashSet, LinkedHashSet, TreeSet
- Queue
- FIFO(First-In-First-Out) 순서로 요소를 처리하는 컬렉션입니다.
- 구현 클래스: LinkedList, PriorityQueue
- Deque
- 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 이중 연결 리스트입니다.
- 구현 클래스: ArrayDeque, LinkedList
- Map
- 키-값 쌍을 저장하는 컬렉션입니다.
- Map 인터페이스는 Collection 인터페이스를 상속하지 않지만, 자주 함께 사용됩니다.
- 구현 클래스: HashMap, TreeMap, LinkedHashMap, Hashtable
다음은 다양한 Collection 인터페이스의 구현 클래스를 사용하는 예제입니다.
package com.example.collections;
import java.util.ArrayList;
import java.util.Collection;
public class ArrayListExample {
public static void main(String[] args) {
// ArrayList 생성
Collection<String> list = new ArrayList<>();
// 요소 추가
list.add("Apple");
list.add("Banana");
list.add("Orange");
// 요소 존재 여부 확인
System.out.println("Contains 'Banana': " + list.contains("Banana"));
// 컬렉션의 크기 확인
System.out.println("Size: " + list.size());
// 요소 제거
list.remove("Banana");
// 컬렉션이 비어 있는지 확인
System.out.println("Is Empty: " + list.isEmpty());
// 컬렉션의 요소 출력
for (String fruit : list) {
System.out.println("Element: " + fruit);
}
}
}
이 예제에서는 ArrayList를 사용하여 Collection 인터페이스의 주요 메서드를 보여줍니다. ArrayList에 요소를 추가하고, 존재 여부를 확인하며, 크기를 확인하고, 요소를 제거하고, 컬렉션이 비어 있는지 확인하며, 모든 요소를 반복하여 출력합니다.
Contains 'Banana': true
Size: 3
Is Empty: false
Element: Apple
Element: Orange
Bulk
"Bulk"라는 용어는 자바의 컬렉션 프레임워크에서 여러 요소를 한 번에 처리하는 작업을 의미합니다. 이는 개별 요소를 하나씩 처리하는 것보다 효율적입니다. "Bulk" 연산은 컬렉션의 여러 요소를 동시에 추가, 제거 또는 검사하는 메서드를 포함합니다.
주요 Bulk 연산
- addAll(Collection<? extends E> c): 컬렉션의 모든 요소를 현재 컬렉션에 추가합니다.
- removeAll(Collection<?> c): 현재 컬렉션에서 주어진 컬렉션의 모든 요소를 제거합니다.
- retainAll(Collection<?> c): 현재 컬렉션에서 주어진 컬렉션에 포함된 요소만 유지합니다.
- containsAll(Collection<?> c): 현재 컬렉션이 주어진 컬렉션의 모든 요소를 포함하는지 확인합니다.
다음은 ArrayList를 사용하여 주요 bulk 연산을 보여주는 예제입니다:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BulkOperationsExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry"));
List<String> list2 = Arrays.asList("Banana", "Date", "Fig");
// addAll: list2의 모든 요소를 list1에 추가
list1.addAll(list2);
System.out.println("After addAll: " + list1);
// removeAll: list2의 모든 요소를 list1에서 제거
list1.removeAll(list2);
System.out.println("After removeAll: " + list1);
// retainAll: list2에 포함된 요소만 list1에 유지
list1.addAll(list2);
list1.retainAll(list2);
System.out.println("After retainAll: " + list1);
// containsAll: list1이 list2의 모든 요소를 포함하는지 확인
boolean containsAll = list1.containsAll(list2);
System.out.println("Contains all elements of list2: " + containsAll);
}
}
After addAll: [Apple, Banana, Cherry, Banana, Date, Fig]
After removeAll: [Apple, Cherry]
After retainAll: [Banana, Date, Fig]
Contains all elements of list2: true
'Java' 카테고리의 다른 글
자바(JAVA)의 예외(Exception) (0) | 2024.07.19 |
---|---|
LinkedList (0) | 2024.07.18 |
HashSet과 HashMap (0) | 2024.07.18 |
Type Erasure(타입 소거) (0) | 2024.07.18 |
@ 어노테이션 (Annotation) (0) | 2024.07.18 |