[기본 개념] 6 | (1.11) Collections
1 컬렉션 프레임웍의 핵심 인터페이스
2 ArrayList
3 LinkedList
4 Stack과 Queue
5 Iterator, Listlterator, Enumeration
6 Arrays
7 Comparator와 Comparable
8 HashSet
9 TreeSet
10 HashMap과 Hashtable
11 TreeMap
12 Properties
13> Collections
14> 컬렉션 클래스 정리 & 요약
13. Collections
컬렉션의 동기화
데이터의 일관성을 유지하기 위해서 공유되는 객체에 동기화가 필요하다. 구버전의 클래스들은 자체적으로 동기화가 되므로 멀티쓰레드 프로그래밍이 아니면 불필요하여 성능을 떨어뜨린다. 그래서 새로 추가된 ArrayList와 HashMap과 같은 컬렉션은 동기화 메서드를 이용하여 동기화처리가 가능하도록 변경하였다.
static Collection synchronizedCollaction(Collection c)
static List synchronizedList(List list)
static Set synchronizedSet(Set s)
static Map synchronizedMap(Map m)
static SortedSet synchronizedSortedSet(SortedSet s)
static SortedMap synchronizedSortedMap(SortedMap m)
이들을 사용하는 방법은 다음과 같다.
List syncList = Collections.synchronizedList(new ArrayList(. . .)) ;
변경불가 컬렉션 만들기
저장된 데이터를 보호하기 위해 읽기전용으로 만들어야 할 때 아래의 메서드들을 이용한다.
static Collection unmodifiableCollaction(Collection c)
static List unmodifiableList(List list)
static Set unmodifiableSet(Set s)
static Map unmodifiableMap(Map m)
static NavigableSet unmodifiableNavigableSet(NavigableSet s)
static SortedSet unmodifiableSortedSet(SortedSet s)
static NavigableMap unmodifiableNavigableMap(NavigableMap m)
static SortedMap unmodifiableSortedMap(SortedMap m)
싱글톤 컬렉션 만들기
단 하나의 객체만을 저장하는 컬렉션을 만들고 싶을 때 아래의 메서드들을 이용한다.
static List singletonList(Object o)
static Set singleton(Object o)
static Map singletonMap(Object key, Object value)
매개변수로 저장할 요소를 지정하면, 해당 요소를 저장하는 컬렉션을 반환하며 반환된 컬렉션은 변경할 수 없다.
한 종류의 객체만 저장하는 컬렉션 만들기
한 종류의 객체를 저장하며, 컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한하고 싶을 때 아래의 메서드들을 이용한다.
static Collection checkedCollaction(Collection c, Class type)
static List checkedList(List list, Class type)
static Set checkedSet(Set s, Class type)
static Map checkedMap(Map m, Class keyType, Class valueType)
static Queue checkedQueue(Queue queue, Class type)
static NavigableSet checkedNavigableSet(NavigableSet s, Class type)
static SortedSet checkedSortedSet(SortedSet s, Class type)
static NavigableMap checkedNavigableMap(NavigableMap m, Class keyType, Class valueType)
static SortedMap checkedSortedMap(SortedMap m, Class keyType, Class valueType)
이들을 사용하는 방법은 두 번째 매개변수에 저장할 객체의 클래스를 지정하면 된다.
List list = new ArrayList( );
List checkedList = checkedList(list, String.class) ; // String만 저장 가능
checkedList.add("abc") ; // OK
checkedList.add(new Integer(3)) ; // error. ClassCastException발생
14. 컬렉션 클래스 정리 & 요약
ArrayList Vector (Object [ ]) |
||||
↙ |
검색기능 향상 ↓ |
추가, 삭제기능 향상 ↘ |
||
Stack |
HashMap Hashtable (Object, Object) |
← |
LinkedList |
|
↙ |
순서유지 기능 향상 ↓ |
↘ |
검색, 범위검색, 정렬기능 향상 ↓ |
↘ |
Properties (String, String) |
LinkedHashMap |
HashSet |
TreeMap |
Queue |
순서유지 기능 향상 ↓ |
↓ |
|||
LinkedHashSet |
TreeSet |
컬렉션 | 특징 |
ArrayList | 배열기반, 데이터의 추가와 삭제에 불리, 순차적인 추가삭제는 제일 빠름. 임의의 요소에 의한 접근성이 뛰어남 |
LinkedList | 연결기반. 데이터의 추가와 삭제에 유리. 임의의 요소에 대한 접근성이 좋지 않다. |
HashMap | 배열과 연결이 결합된 형태. 추가, 검색, 접근성이 모두 뛰어남. 검색에는 최고성능을 보인다. |
TreeMap | 연결기반. 정렬과 검색(범위검색)에 적합. 검색성능은 HashMap보다 떨어짐 |
Stack | Vector를 상속받아 구현 |
Queue | LinkedList가 Queue인터페이스를 구현 |
Properties | Hashtable을 상속받아 구현 |
HashSet | HashMap을 이용해서 구현 |
TreeSet | TreeMap을 이용해서 구현 |
LinkedHashMap LinkedHashSet |
HashMap과 HashSet에 저장순서 유지기능 추가 |
출처 | Java의 정석 (남궁 성)
'💠프로그래밍 언어 > Java' 카테고리의 다른 글
[기본 개념] 7 | (1.2) 와일드 카드, 지네릭 메서드, 지네릭 타입 제거 (0) | 2022.01.17 |
---|---|
[기본 개념] 7 | (1.1) 지네릭스 클래스 (0) | 2022.01.17 |
[기본 개념] 6 | (1.10) TreeMap, Properties (0) | 2022.01.04 |
[기본 개념] 6 | (1.9) HashMap, Hashtable (0) | 2022.01.03 |
[기본 개념] 6 | (1.8) TreeSet (0) | 2021.12.03 |