728x90

자바를 사용하시다 보면 우리가 모르는 많은 freamwork를 사용하게 될 것입니다.

알아야 보인다는 것 처럼 어떠한 장점이 있고 연차가 쌓였을 때 정확한 오더를 할 수 있을 것 입니다.

지금부터 알아볼 자바에서 제공하는 Collection Framework는 우리가 많이 사용하지만 정확한 개념을 모르는 것들을 소개하고자 합니다.

Collection framework 란?

DATA를 더 쉽게 더 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 즉 인터페이스의 집합을 의미합니다.

 

자 그렇다면 인터페이스에는 무엇이 있는지 살펴보도록 하겠습니다.

 

컬렉션 framework

위에 그림과 같이 인터페이스는 총개에서 파생됩니다.

 

1. List 인터페이스

2. Set 인터페이스

3. Map 인터페이스

 

위에 3가지 인터페이스는 아래 표로 간단히 정리를 해보았습니다.

 

인터페이스 설명 예시
List<E> - 순서가 있는 데이터의 집합.
- 데이터의 중복을 허용.
Vector, ArrayList, LinkedList, Stack, Queue 등
ex) 대기자 명단
Set<E> - 순서가 없는 데이터의 집합.
- 데이터의 중복을 허용하지 않음.
HashSet, TreeSet 등
ex) 양의 정수 집합, 소수의 집합
Map<K, V>

- 키(key)와 값(value)의 한 쌍(Pair)으로 이루어지는 데이터의 집합
- 순서가 없음.
- 키는 중복을 허용하지 않음
- 값은 중복 허용.

HashMap, TreeMap, Hashtable, Properties 등
ex) 우편번호, 지역번호(전화번호)

List

배열과 같이 순서가 있는 List 인터페이스는 객체들을 일렬로 늘어놓는 구조를 가지고 있습니다.

객체를 인덱스(순번을 매긴다)를 매겨 객체를 저장하여 검색/삭제 등을 할 수 있는 기능을 가지고 있습니다.

 

이 인덱스를 기준으로 각각의 객체는 Array를 가지고 있습니다. 그리하여 동일한(중복) 값을 참조하더라도 객체들은 값을 참조하는 게 아닌 그것에 있는 Array를 참조하여 값을 가지고 옵니다.

 

그러므로 다수의 사용자들이 동일한 값을 변경하려고 할 때 문제가 생기기도 합니다.

그래서 ArrayList의 경우는 Thread Safety하지 않다라고도 합니다.

 

하지만 여기서 Vertor는 Thread에서도 Safety 합니다.

이유는 Vertor는 synchronized가 되어 있어 들어온 순서대로 값을 변경하기에 Thread Safety 합니다.

 

그러므로 싱글 스레드 환경에서는 Vertor는 쓸데없이 synchronizd를 하기 때문에 성능면에서는 좋지 않아 쓰지 않는 것을 추천합니다.

Set

순서가 없는 데이터의 집합이고 데이터의 중복을 허용하지 않습니다.

Set은 ArrayList 대신에 iterator를 사용합니다.

LinkedList도 순서는 있지만 인데스가 없으므로 iterator를 사용합니다.

 

- HashSet

      빠른 접근 속도를 가지고 있음.

      순서를 모름.

      객체 중복 허용하지 않음.

 

Set <E> = new HashSet<E>();

      

- LinkedHashSet 

      추가된 순서대로 접근 가능

 

Set<E> = new LinkedHashSet<E>();

 

- TreeSet

      정렬방법을 지정하지 않음.

 

Set<E> = new TreeSet<E>();

Map

키(Key) 값(Value)의 한 쌍(Pair)으로 구성된 객체를 저장하는 구조를 가지고 있다.

키는 중복이 허용되지 않지만 값은 중복을 허용할 수가 있다.

기존에 저장된 키와 동일한 키로 값을 저장하면 새로운 값으로 Replace 된다.

 

- HashMap

Map 인터페이스를 대표하는 Map Collection.

주로 Key는 String 타입을 사용하며, String이 문자열이 같을 경우 동등 객체로 사용되게 한다.

 

HashMap<String, String> hashMap = new HashMap<String, String>();

 

- TreeMap

이진트리를 기반으로 한 Map Collection

키와 값을 저장하는 동시에 키를 정렬합니다.

 

* 정렬되는 순서

1. 숫자

2. 알파벳 대문자

3. 알파벳 소문자

4. 한글

 

정렬을 해야 될 필요가 있다면 HashMap 보다는 TreeMap으로 사용하면 성능면에서 좋습니다.

 

TreeMap<String, String> treeMap = new TreeMap<String, String>();

 

 

 

반응형

+ Recent posts