컬렉션 프레임워크란 데이터들을 저장하는 클래스들을 표준화한 설계를 의미한다. 우리가 흔히 사용하는 List와 Set, Map 등은 JDK1.2 이후로 등장하여 사용하고 있다. 인터페이스 List와 Set은 서로 많은 공통부분이 있어서 공통된 부분을 다시 Collection 인터페이스로 정의할 수 있었다. Map은 이들과 전혀 다른 현태이기 때문에 포함되지 못했지만 이러한 설계는 객체지향언어의 장점을 보여주는 예시이다. 후에 프로그래밍 실력이 늘었다면 컬렉션 플레임웍의 실제 소스를 분석해보면 객체지향적인 설계능력을 향상시키는데 도움이 많이 될것이다.
List
순서가 있는 데이터 집합. 중복을 허용
ArrayList, LinkedList, Stack, Vector
Set
순서를 유지하지 않는 데이터 집합. 중복을 허용하지 않는다.
HashSet, TreeSet
Map
key와 value로 이루어진 데이터의 집합, 순서는 유지되지 않으며 key는 중복을 허용하지 않고 value는 중복을 허용한다.
HashMap, TreeMap, Hashtable, Properties
이 외에 Vector, Stack, Hashtable, Properties와 같은 클래스들은 컬렉션 프레임웍이 만들어지기 이전부터 존재하던 것이기 때문에 컬렉션 프레임웍의 명명법을 따르지 않는다. Vector나 Hashtable은 대체되어지는 프레임웍이 있기 때문에 사용하지 않는 것이다 좋다. 대체되는 프레임웍으로는 ArrayList와 HashMap이다.
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체 또는 Collection 객체들을 Collection에 추가한다.
void clear
Collection의 객체들을 모두 삭제
boolean contains(Object o)
boolean containsAll(Collection c)
Collection에 포함되어 있는지 true, false로 반환
boolean equals(Object o)
동일한 Collection인지 비교
int hashcode()
Collection의 hash code 반환
boolean isEmpty
비어있는지 확인
Iterator iterator()
Iterator 객체 반환
boolean remove(Obejct o)
지정된 객체를 삭제
boolean removeAll(Collection c)
지정된 Collection에 포함된 객체들을 삭제
boolean retainAll(Collection c)
지정된 Collection에 포함된 객체만 남기고 다른 객체들은 삭제한다. 삭제에 성공하면 true, 삭제한 것이 없으면 false
int size()
Collection의 크기 반환
Object[] toArray()
Collection에 저장된 객체를 객체배열(=Object[])로 반환한다.
Object[] toArray(Object[] a)
지정된 배열에 Collection 객체를 저장해서 반환한다.
람다와 스트림에 관련된 메서드들이 더 있는데 아직 학습하지 않았으므로 람다와 스트림을 학습할 때 공부해보자. 또한 Java api를 보면 위 메서드들에 대한 설명에 Object 대신 E,K,V,T 등으로 표시되어 있는데 이는 제너릭으로 아직 학습하지 않았고 제너릭은 Object로 이해해도 무방하다.
List 인터페이스
List는 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용된다.
Set 인터페이스
중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션 클래스를 구현하는데 사용
Map 인터페이스
Map은 key와 value 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스