java에서 Collection이란 데이터의 집합, 그룹을 의미한다. JCF(Java Collection Framework)는 다수의 데이터를 쉽고 효과적으로 처리할수 있는 표준화 된 방법을 제공하는 클래스의 집합이다. 기존에는 배열을 이용하여 데이터를 처리하였지만, 크기가 고정되어 있고 삽입/삭제 연산이 오래걸리는 불편한 점을 개선하기 위해 JCF가 등장했다.
Collection의 주요 인터페이스로는 List, Set, Map이 있다.
List
입력 순서를 유지하며, 데이터의 중복을 허용한다. 인덱스가 존재하여 이를 통해 저장된 데이터에 접근이 가능하다.
- ArrayList : 단방향 포인터 구조. 데이터의 순차적 접근(조회)가 빠르다.
- LinkedList : 양방향 포인터 구조. 데이터의 삽입, 삭제가 빠르다.
Set
순서가 없고 중복된 데이터를 허용하지 않는다.
빠른 검색 속도를 가지며, 인덱스가 따로 존재하지 않기 때문에 iterator를 사용한다.
- HashSet : 인스턴스의 해시값을 기준으로 저장하기 때문에, 입력 순서를 보장하지 않으며 데이터의 중복을 허용하지 않는다.
- LinkedHashSet : 입력된 순서를 보장한다.
- TreeSet : 이진탐색트리를 기반으로 한 set. 데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며 데이터의 중복을 허용하지 않는다.
Map
key, value 구조를 가지고 있으며 key는 순서를 유지하지 않고 중복을 허용하지 않지만, value값은 중복이 허용된다.
인덱스가 따로 존재하지 않기 때문에 iterator를 통해 조회가 가능하다.
- HashMap : Key에 대한 중복이 없으며 순서를 보장하지 않는다.
- LinkedHashMap : Key(키)에 대한 입력 순서를 보장하며, 중복 Key(키)를 허용하지 않음
- TreeMap : 레드-블랙 트리(Red-Black Tree)를 기반으로 Key&Value를 저장. 입력한 Key 데이터의 크기가 비교 가능한 경우 오름차순으로 정렬되며, 중복 Key는 허용하지않는다.
결론적으로 말하자면,
List는 데이터들이 순서대로 저장되며 중복을 허용한다.
Set은 순서가 보장되지 않고 데이터들의 중복을 허용하지 않는다.
Map은 순서가 보장되지 않고 Key값의 중복은 허용하지 않지만 Value값의 중복은 허용된다.
'Computer Science > Java' 카테고리의 다른 글
String, StringBuilder, StringBuffer의 차이 (0) | 2023.04.10 |
---|---|
동일성과 동등성 (0) | 2023.04.10 |
원시 타입과 참조 타입 (1) | 2023.04.10 |
기타 제어자 - static, final, abstract (0) | 2023.04.10 |
접근 제어자 (1) | 2023.04.10 |