gimmickbutreal
[CS/Java] Collection Framework란 무엇일까? 본문
Collection Framework
정의
Java에서 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이며, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것
여기서 말하는 구조화란 구조화 된 프로그래밍을 일컫는 말인데, 선택(if / then / else) 및 반복 ( while/ for), 블록 구조의 구조화된 제어 흐름 구성을 광범위하게 사용하여 컴퓨터 프로그램의 명확성과 품질 및 개발 시간을 개선하는 것을 목표로 하는 프로그래밍 패러다임을 의미합니다.
Collection Framework는 3가지 구성 요소인 인터페이스, 구현, 알고리즘으로 이루어져 있습니다.
위 그림에서 <E>, <K,V>는 Collection Framework를 구성하는 모든 클래스가 제네릭으로 표현되어 있음을 알려주고 있습니다.
보시다시피 인터페이스는 크게 "List", "Set", "Map", "Queue"가 있습니다. 주로 Queue를 제외한 3가지 인터페이스가 주로 쓰이며 그 특징은 아래와 같습니다.
인터페이스 | 정의 | 구현 클래스 |
List<E> | 순서가 있는 데이터의 집합으로, 중복을 허용 | Vector, ArrayList, LinkedList, Stack, Queue |
Set<E> | 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않음 | HashSet, TreeSet |
Map<K,V> | 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 값은 중복을 허용하나, 키는 허용하지 않음 | HashMap, TreeMap, Hashtable, Properities |
Collection Interface
정의
Collection Framework에 속하는 인터페이스를 구현한 클래스
— 아래 내용은 oracle docs
The collection interfaces are divided into two groups. The most basic interface, java.util.Collection, has the following descendants:
- java.util.Set
- java.util.SortedSet
- java.util.NavigableSet
- java.util.Queue
- java.util.concurrent.BlockingQueue
- java.util.concurrent.TransferQueue
- java.util.Deque
- java.util.concurrent.BlockingDeque
The other collection interfaces are based on java.util.Map and are not true collections. However, these interfaces contain collection-view operations, which enable them to be manipulated as collections. Map has the following offspring:
- java.util.SortedMap
- java.util.NavigableMap
- java.util.concurrent.ConcurrentMap
- java.util.concurrent.ConcurrentNavigableMap
정의 : Collection Framework에 속하는 인터페이스를 구현한 클래스
해당 Framework의 모든 Collection 클래스는 List, Set, Map 인터페이스 중 하나의 인터페이스를 구현합니다. 이는 클래스 이름에도 구현한 인터페이스의 이름이 포함되어 바로 구분할 수 있습니다.아래 예제는 ArrayList 클래스를 이용하여 List를 생성하고 조작하는 예제 코드입니다.
import java.util.ArrayList;
public class Collection {
public static void main(String[] args){
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("Li");
arrList.add("nan");
arrList.add("ce");
for(int i = 0; i<arrList.size(); i++){
System.out.println(arrList.get(i));
}
}
}
-----
출력 결과
Li
nan
ce
Collection 인터페이스
List와 Set 인터페이스의 많은 공통된 부분을 Collection 인터페이스에서 정의하고, 두 인터페이스는 해당 공집합을 상속 받습니다. 따라서, Collection 인터페이스는 컬렉션을 다루는 데 가장 기본적인 동작들을 정의하고, 아래의 methods로 제공하고 있습니다.
메소드 정의
boolean add(E e) | 해당 collection에 전달된 요소를 추가함 |
void clear() | 해당 collection의 모든 요소를 제거함 |
boolean contains(Object o) | 해당 collection이 전달된 객체를 포함하고 있는지를 확인함 |
boolean equals(Object o) | 해당 collection과 전달된 객체가 같은 지 확인함 |
boolean isEmpty() | 해당 collection이 비어있는지를 확인함 |
Iterator<E> iterator() | 해당 collection의 반복자(iterator)를 반환함 |
boolean remove(Object o) | 해당 collection에서 전달된 객체를 제거함 |
int size() | 해당 collection의 요소의 총 개수를 반환함 |
Object[] toArray() | 해당 collection의 모든 요소를 Object 타입의 배열로 반환함 |
'CS' 카테고리의 다른 글
스택과 큐 Stack & Queue (0) | 2023.07.12 |
---|---|
연결리스트 LinkedList (0) | 2023.07.12 |
복잡도 (0) | 2023.07.06 |
[CS/DB] SQL과 NoSQL의 차이 (0) | 2022.07.31 |
[CS/Java] 옵저버 패턴(Observer Pattern) (0) | 2022.07.24 |