티스토리 뷰

Collection Framework

- 배열의 단점을 보완한 데이터 군을 저장하는 클래스들을 표준화 한 설계

- 다수의 데이터를 쉽게 처리할 수 있는 방법을 제공하는 클래스들로 구성

- 다른말로 컨테이너라고도 부른다 값을 담는 그릇의 개념




컬렉션프레임워크 종류


인터페이스 

특징

List 


 순서가 있는 데이터의 집합

 데이터의 중복을 허용

 데이터를 add 하면 앞에서 부터 순차적으로 데이터가 들어감

 각각의 저장되어 있는 공간들의 고유한 index를 갖는다



 구현 클래스 : ArrayList, LinkedList, Stack, Vector

 

Set

 

 순서를 유지하지 않는 데이터의 집합

 데이터의 중복을 허용하지 않는다

 순서와 상관없이 add된다


 

 구현 클래스 : HashSet, TreeSet


Map


 키와 값의 쌍으로 이루어지 데이터의 집합

 순서는 유지되지 않으며 키는 중복을 허용하지 않고 값은 중복을 허용한다

 iterator( ) 기능이 지원되지 않는다

 

 

 구현 클래스 : HashMap, TreeMap, Hashtable, Properties등




비교

String[] / ArrayList

- String[] : 생성후 크기 변경 불가

- ArrayList : 배열과 비슷하지만 생성시에 사용될 List의 크기를 지정할 필요가 없다


중복을 허용하는 List / 중복을 허용하지 않는 Set

- ArrayList : 중복을 허용하며 데이터가 순서대로 정렬된다

- HashSet : 중복을 허용하지 않으며 순서대로 정렬되지 않는다


Map

- Map은 Iterator 기능이 없기 때문에 Map의 데이터를 가지고 있는 Set을 만들고 Set에 들어가 있는 데이터 타입은 MapEntry 

(Set에 있는 값은 Map에 있는 값과 대응된다 -> Map 에 있는 값을 getKey(), getValue() 로 받아온다)


Vector / ArrayList

- List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다 

- ArrayList는 기존의 Vector를 개서한 것으로 구현원리와 기능적으로 동일하다

- 데이터의 저장공간으로 배열을 사용한다

- Vector는 자체적으로 동기화 처리가 되어 있으나 ArrayList는 그렇지 않다

- Object 배열을 이용해서 데이터를 순차적으로 저장한다

- 배열에 더이상 공간이 없으면 보다 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 새로운 배열로 복사한다음 저장된다

- ArrayList는 removeRange()를 제외한 모든 메서드가 Vector 메서드와 일치한다



Iterator

컬렉션 프레임워크에서 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화 하였다

컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator 인터페이스를 정의하고 Collection인터페이스에는 Iterator를 반환하는 iterator()를 정의하고 있다

iterator()는 Collection 인터페이스에 정의된 메서드 이므로 Collection인터페이스의 자손인 List와 Set에도 포함되어 있다

List나 Set인터페이스를 구현하는 컬렉션은 iterator()가 컬렉션의 특징에 알맞게 작성되어 있다


동기화(Synchronization)

- 멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 접근 할 수 있기 때문에 데이터의 일관성(consistency)을 유지하기 위해 동기화가 필요함

- Vector와 같은 구버전 클래스들은 자체적으로 동기화가 지원됨

- ArrayList와 같은 신버전 클래스들은 별도의 동기화 처리가 필요하다

- Collections 클래스는 다음과 같은 동기화 처리 메서드를 제공한다

- static Collection SynchronizedCollection(Collection c)

- static List SynchronizedList(List list)

- static Map SynchronizedMap(Map map)

- static Set SynchronizedSet(Set set)

- static SortedMap SynchronizedSortedMap(SortedMap m)

- static SortedSet SynchronizedSortedSet(SortedSet s)





'Development > Java' 카테고리의 다른 글

비트연산자 & 논리연산자  (0) 2018.03.04
예외처리(Exception)  (0) 2017.08.24
JVM 메모리 구조 와 가비지 컬렉션(Garbage Collection)  (0) 2017.08.02
Static이란?  (0) 2017.08.02
JSP란?  (0) 2017.08.01
댓글