효율적으로 데이터를 저장하고 관리하는 데 도움이 되는 인터페이스와 클래스의 모음
Set
, List
, Queue
, Deque
와 같은 인터페이스 제공
ArrayList
, Vector
, LinkedList
, HashSet
, PriorityQueue
, TreeSet
, LinkedHashSet
과 같은 클래스 제공
컬렉션 디자인을 할 필요없이 컬렉션 활용에만 집중할 수 있으므로 프로그래밍 노력 감소
데이터 구조의 고성능 구현을 제공하므로 성능 향상
이미 만들어진 아키텍처를 제공하는 클래스 및 인터페이스 집합.
최적의 객체 지향 설계에는 항상 모든 클래스가 동일 종류의 작업을 수행하도록 클래스 컬렉션이 있는 프레임워크가 포함된다.
- thread-safe란?
멀티 스레드 환경에서 한 자원에 대해 여러 스레드가 접근해도 문제가 생기지 않음
- synchronized(동기화)란?
한 스레드가 자원을 사용하는 동안 해당 자원에 대해 lock이 걸려있어서 다른 스레드는 접근하지 못함
즉, 멀티 스레드가 아닌 환경에서는 ArrayList가 더 빠르다. 또한 Vector는 레거시 클래스이므로 ArrayList를 쓰는 것을 더 추천
Iterator
Enumeration
- fail-fast란?
동작 중 오류가 발생하면 바로 이를 알리고 작업을 중단.
반대는 fail-safe : 동작 중 오류가 발생해도 계속 작업 진행
LinkedList
ArrayList
둘 다 헤드에 있는 요소 반환하고 제거.
하지만 대기열이 비어있을 때 remove()는 예외를 throw, poll()은 null반환
함수에 의해 생성된 임시 변수 저장하는 곳. 런타임 중에 선언, 초기화 된다.
Collections.synchronizedList(list);
Collections.synchronizedMap(map);
Collections.synchronizedSet(set);
Queue
Deque
hashmap
hashtable
컬렉션을 순화하기 위한 방법을 제공하는 인터페이스.
헤드 요소를 리턴
어떤 요소도 제거하지 않으며 비어 있으면 null 리턴