컬렉션 프레임워크

라이언양 위키
둘러보기로 가기 검색하러 가기

1 소개

자바는 널리 알려져 있는 자료구조(Data Structure)를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지에서 제공합니다. 이들을 총칭해서 컬렉션 프레임워크(Collection Framework)라고 부릅니다.

2 컬렉션 프레임워크

컬렉션(Collection)은 객체의 저장을 뜻하고, 프레임워크(Framework)란 사용 방법을 정해놓은 라이브러리를 말합니다. 실제로 컬렉션 프레임워크는 사용 방법을 정의한 인터페이스와 실제 객체를 저장하는 다양한 컬렉션 클래스(구현 클래스)를 제공합니다.

컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있습니다. 이 인터페이스들은 컬렉션 클래스를 사용하는 방법을 정의한 것입니다. 이러한 인터페이스를 구현 클래스는 아래와 같다.

  • List: ArrayList, Vector, LinkedList
  • Set: HashSet, LinkedHashSet, TreeSet
  • Map: HashMap, Hashtable, TreeMap, Properties

스레드에 안전한(thread-safe) 클래스는 Vector, Hashtable 등이 있다.

3 List 컬렉션

List 컬렉션은 배열과 비슷하게 객체를 인덱스로 관리합니다. 배열과의 차이점은 저장 용량(capacity)이 자동으로 증가하며, 객체를 저장할 때 자동 인덱스가 부여된다는 것입니다. 그리고 추가, 삭제, 검색을 위한 다양한 메소드가 제공됩니다. List 컬렉션은 동일한 객체를 중복 저장할 수 있고 null도 저장이 가능합니다.

4 Set 컬렉션

Set 컬렉션은 저장 순서가 유지되지 않습니다. 또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있습니다. Set 컬렉션은 수학의 집합과 비슷합니다. 집합은 순서와 상관없고 중복이 허용되지 않기 때문입니다.

5 Map 컬렉션

Map 컬렉션은 키(key)와 값(vaue)으로 구성된 Map.Entry 객체를 저장하는 구조를 가지고 있습니다. Entry는 Map 인터페이스 내부에 선언된 중첩 인터페이스입니다. 여기서 키와 값은 모두 객체입니다. 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있습니다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대체됩니다.

6 Stack 인터페이스

Stack 인터페이스는 LIFO(Last In First Out, 후입선출) 자료구조를 구현한 클래스입니다.

  • E push(E item): 주어진 객체를 스택에 넣습니다.
  • E peek(): 스택의 맨 위 객체를 가져옵니다. 객체를 스택에서 제거하지 않습니다.
  • E pop() 스택의 맨 위 객체를 가져옵니다. 객츠레르 스택에서 제거합니다.

7 Queue 인터페이스

Queue 인터페이스는 FIFO(First In First Out, 선입선출) 자료구조를 구현한 클래스입니다.

  • boolean offer(E e) - 주어진 객체를 넣습니다
  • E peek() - 객체 하나를 가져옵니다. 객체를 큐에서 제거하지 않습니다.
  • E poll() - 객체 하나를 가져옵니다. 객체를 큐에서 제거합니다.

Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList 입니다. LinkedList는 List 인터페이스를 구현했기 때문에 List 컬렉션이기도 합니다.