데이터 군을 저장하는 클래스들을 표준화한 설계
JDK1.2 이전까지는 vector, hashtable 등을 따로 다뤄야했으나
JDK1.2 이후 Collection Framework로 표준화된 방식으로 다룰 수 있음
List : 순서가 있는 데이터 집합, 데이터 중복 가능
List 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등
Set : 순서를 유지하지 않는 데이터의 집합, 데이터 중복 불가
구현 클래스 : HashSet, TreeSet 등
Map : key, value의 pair로 이루어진 데이터 집합, 순서 유지 안됨, key 중복 안됨, value 중복 가능
구현 클래스 : HashMap, TreeMap, Hashtable, Properties 등
Vector, Stack, Hashtable, Properties 는 Collection Framework 이전부터 존재하여 Collection Framework의 명명법을 따르지 않음
호환을 위해 설계를 변경해서 남겨줬지만 가능하면 사용하지 않고 새로 추가된 클래스를 사용하는 것이 좋다.
Vector를 개선한 것으로 Vector와 구현원리와 기능적인 측면에서 동일함
get : O(1)
insert : O(N)
remove : O(N)
resize : O(N)
단방향 링크드 리스트
get : O(N)
insert : O(1)
remove : O(1)
resize : O(1)
우선순위 큐
null은 저장 불가
heap 형태로 저장
pop : O(log N)
push : O(log N)
Iterator : Collection에 저장된 각 요소에 접근
반복문을 사용해서 컬렉션 클래스의 요소들을 읽어올 수 있음
Map에서는 직접 사용불가, keySet이나 entrySet으로 set형태로 얻어 온 후에 사용 가능
Enumeration : Iterator의 구버전, Iterator 사용하는 것이 좋음
ListIterator : 양방향으로 이동 가능한 Iterator, List에서만 사용가능
배열을 다루는데 유용한 메서드가 정의되어 있는 클래스
sort() : 정렬해줌
binarySearch() : 배열이 정렬된 상태일 때 이분탐색해서 저장된 index 리턴
parallel 으로 시작하는 이름의 메서드 : 여러 스레드가 작업을 나누어 처리하도록 하여 빠른 결과를 얻음
컬렉션을 정렬하는데 필요한 메서드를 정의하고 있는 인터페이스
compare, compareTo : 같으면 0, 작으면 음수, 크면 양수 리턴
sort는 기본적으로 오름차순 정렬인데 comparator를 구현하는 클래스를 작성하여 정렬 순서를 다양하게 수정가능
인스턴스를 저장하는 경우 인스턴스의 멤버 값이 같은지는 판별하지 않기 때문에 이를 위해서는 equals()를 오버라이딩 해주어야한다.
equals를 오버라이딩 하는경우 hashCode 또한 같이 동작하도록 오버라이딩 해주는 것이 원칙이다.
binary search tree 구조
red-black tree로 구현됨
set인터페이스를 구현하여 중복 안됨
Hashtable : HashMap의 구버전, HashMap 사용 권장
해싱을 사용하여 많은 양의 데이터에서 검색이 빠름
binary search tree 형태로 키 벨류 쌍으로 데이터 저장
검색과 정렬에 적합
HashMap의 구버전은 Hashtable을 상속받아 구현한 것
Hashtable 은 키 벨류가 object인데 Properties는 String 이라 비교적 단순하다.
주로 애플리케이션의 환경설정과 관련된 property(속성)을 저장하는데 사용돔
데이터를 파일로부텉 읽고 쓰는 편리한 기능을 제공한다.
Collection과 관련된 메서드를 제공한다.
fill, copy, sort, binarySearch 등
컬렉션의 동기화 : 멀티 쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성을 유지하기 위해서는 공유되는 객체에 동기화가 필요하다
Collections 클래스에서 동기화 메서드를 제공한다.
변경불가 컬렉션 만들기
싱글톤 컬렉션 만들기 : 인스턴스를 new연산자가 아닌 메서드를 통해서만 생성할 수 있게함
한 종류의 객체만 저장하는 컬렉션 만들기 : 컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한