1. 컬렉션 (Collection)


# 객체들을 제어/관리하기 위한 클래스를 의미 (자료구조)

* 배열과 같이 멤버 객체를 관리하기 위한 클래스들을 통틀어 이르는 말 


# 컬렉션 프레임워크 (Collection Framework)

- 컬렉션 클래스들과 인터페이스들의 집합 

- JDK 1.2버전부터 사용가능 


1) 컬렉션 프레임워크의 장점 

(1) 프로그래밍의 편리성

- 자료구조나 알고리즘을 직접 구현할 필요없이 바로 사용할 수 있다. 


(2) 통합된 API 구조로 인한 효율성 증대와 고성능 

- 인터페이스마다 API들이 비슷한 구조로 개발되어 있고, 알고리즘을 이용하여 정렬이나 검색하는데 필요한 API들의 성능이 높다.


(3) 재사용성 증대 

- 이미 자료구조 기능을 구현한 클래스들을 제공한다. 


2) 컬렉션 프레임워크의 핵심 인터페이스들




2. 컬렉션의 핵심 인터페이스 




1) List 인터페이스 


# 배열처럼 중복된 데이터를 허용하고 입력된 순서대로 멤버 객체들을 처리할 수 있다. 

* FIFO(First In First Out)

* 각 멤버 객체들을 순서대로 관리, 순차 처리, 대량의 데이터를 처리하는데 주로 사용된다. 

* 다른 컬렉션들보다 속도가 빠르다는 장점이 있다. 




2) Set 인터페이스 


# 멤버 객체들의 순서가 없기 때문에 입력한 순서대로 출력되지 않으며, 중복 데이터를 허용하지 않는 장점이 있다. 




3) Map 인터페이스 


# Key / Value 구조로 되어있으며, 

Key는 배열의 index와 같은 역할을, Value는 배열의 멤버 객체 같은 역할을 한다. 


* Map 컬렉션에 추가하고자 하는 객체는 value에 저장되며 그 value를 가리키기 위한 고유의 값이 key에 저장된다.

* key는 모든 데이터 타입으로 설정 가능하다. (Object 객체도 가능)

* 개발자가 직접 key값을 생성하거나 관리할 수 있어, 원하는 데이터를 빠르고 쉽게 참조할 수 있다는 장점이 있다. 





3. 컬렉션 인터페이스의 메소드


- 인터페이스끼리 서로 상속할 수 있으며 다중 구현이 가능하다.

- 컬렉션 인터페이스의 메소드는 공용