Collection 프레임워크
객체를 그룹 단위의 데이터로 저장하는 기본적인 자료구조들의 모음
종류

> List 인터페이스 메소드
객체추가
- boolean add(E e) : 주어진 객체를 맨 끝에 추가
- void add(int index, E element) : 주어진 인덱스에 객체 추가
- set(int index, E element) : 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈
객체 검색
- boolean contains(Object o) : 주어진 객체가 저장되어 있는지 여부 확인
- E get(int index) : 주어진 인덱스에 저장된 객체를 리턴
- boolean isEmpty() : 컬렉션이 비어 있는지 조사(비어있으면 true, 값 존재 false)
- int size() : 저장되어 있는 전체 객체 수를 리턴
객체 삭제
- void clear() : 저장된 모든 객체를 삭제
- E remove(int index) : 주어진 인덱스에 저장된 객체를 삭제
- boolean remove(Object o) : 주어진 객체를 삭제
> Set 인터페이스 메소드
객체추가
- boolean add(E e) : 주어진 객체 e 를 추가
객체 검색
- boolean contains(Object o) : 주어진 객체가 저장되어 있는지 여부 확인
- boolean isEmpty() : 컬렉션이 비어 있는지 조사
- int size() : 저장되어 있는 전체 객체 수를 리턴
- Object[] toArray() : 배열로 반환
- Object[] toArray(Object[] a) : 지정한 배열의 클래스 타입으로 배열로 반환
객체 삭제
- void clear() : 모든 객체를 삭제
- boolean remove(Object o) : 요청된 객체를 삭제
- boolean removeAll(Collection c) : 저장된 모든 객체를 삭제
> Map 인터페이스 메소드
객체추가
- V put(K key, V value) 주어진 키와 값을 추가
객체 검색
- V get(Object key) : 키의 값을 리턴
- boolean contains(Object key) : 키가 있는지 여부
- boolean containsValue(Object value) : 값이 있는지 여부
- Set<Map.Entry<K,V>> entrySet() : 모든 엔트리 객체를 Set에 담아 리턴
- boolean isEmpty() : 컬렉션이 비어 있는지 조사
- int size() : 저장되어 있는 전체 객체 수를 리턴
- Set keySet() : 모든 키를 Set 객체에 담아 리턴
- Collenction values() : 모든 값을 Collection 객체에 담아 리턴
객체 삭제
- void clear() : 저장된 엔트리객체를 삭제
- V remove(Object key) : 주어진 키와 일치하는 엔트리객체를 삭제
> 동기화된 Collection
Collction의 프레임워크 대부분이 싱글 쓰레드 환경에서 사용할 수 있도록 설계되어있지만, Vector와 Hashtable은 동기화(synchronized) 메소드로 구성되어 있기 때문에 멀티 쓰레드 환경에서 사용할 수 있게 설계되어 멀티 쓰레드 환경에 안전하다.
ArrayList, HashSet, HashMap은 멀티 쓰레드 환경에서 안전하지 않기 때문에 자바에서 synchronized 메소드를 제공한다.
List
synchronizedList(List list) : List를 동기화된 List로 리턴
Map<K,V>
synchronizedMap(Map<K,V> m) : Map을 동기화된 Map으로 리턴
Set
synchronizedSet(Set s) : Set을 동기화된 Set으로 리턴
하지만 단점이 있다
동기화된 Collection은 멀티 쓰레드 환경에서 하나의 쓰레드가 요소를 안전하게 처리하도록 도와주지만, 쓰레드가 작업을 할 때 락이 발생하기 때문에 전체 요소를 빠르게 처리하지는 못한다.
이를 위해 java.util.concurrent 패키지에서 ConcurrentHashMap과 ConcurrentLinkedQueue를 제공한다.