자바 Collection Framework는 크게 List,Set,Map으로 분리가 된다. 그리고 List,Set은 공통분모가 많아서 Collections라는 인터페이스로 묶인다.
List | 순서가 있는 집합, 중복 허용 | ArrayList,LinkedList,Stack,Queue 등 |
Set | 순서가 없고 중복을 허용하지 않음 | HashSet,TreeSet 등 |
Map | Key,Value쌍으로 구분, 순서없음, 중복허용하지 않음 | HashMap,TreeMap,HashTable,Properties 등 |
대부분의 자료구조들은 위 3가지 분류에 포함이 되기 때문에 3가지 분류의 특징들을 잘 알아두고 사용하는 것이 중요하다.
Collections 인터페이스
메소드 | 설명 |
boolean add boolean addAll(Collection c) |
지정된 객체를 저장 |
void clear | Collection의 모든 객체를 삭제 |
boolean contains(Object o) boolean containAll(Collection c) |
지정된 객체가 포함되는지 확인 |
boolean equals(Object o) | 동일한 Collection인지 비교한다 |
int size() | 크기를 반환한다. |
int hashCode | hash code를 반환한다 |
boolean isEmpty() | Collection이 비어있는지 확인한다. |
Iterator iterator() | iterator를 반환한다. |
boolean remove(Object o) | 지정된 객체를 상제한다 |
boolean removeAll(collection c) | 지정된 Collection에 포함된 객체들을 삭제 |
boolean retainAll(Collection c) | 지정된 Collection에 포함된것만 남기고 나머지는 삭제한다. 변화가 있으면 true를 반환 변화가 없으면 false를 반환 |
Object[] toArray | Collection에 있는 객체들을 배열로 반환한다. |
Object[] toArray(Object[] a) | 지정된 배열에 Collection의 객체를 저장해서 반환한다. |
List
ArrayList
여타 다른 메소드는 Collections에 나와 있으니 추가적으로 꼭 필요한 메소드들만 정리했다
메소드 | 설명 |
int indexOf(Object o) | 해당 오브젝트의 위치를 반환한다. |
int lastIndexOf(Object o) | 객체가 저장된 위치를 끝부터 역방향으로 검색해서 반환, 인덱스는 앞에서 부터 센것처럼 보여준다 |
Object set(int index,Object e) | 주어진 객체를 지정된 위치에 저장한다. 기존의 데이터가 있다면 삭제하고 대체한다. |
void sort(Comparator c) | 지정된 정렬기준(c)로 ArrayList를 정렬 |
void trimToSize() | 용량을 크기에 맞게 줄인다 |
LinkedList
자바의 LinkedList는 DoubleLinkedList이다.
메소드 | 설명 |
Object set(int,Object) | 지정된 위치에 객체를 저장하며, 기존의 데이터가 있다면 삭제 |
Object element() | 리스트의 첫 번째 요소 반환 |
boolean offer(Object o) | 지정된 객체를 리스트의 끝에 추가, 성공하면 true, 실패하면 false를 반환 |
Object peek() | 리스트의 첫 번째 요소를 반환 |
Object poll() | 리스트의 첫 번째 요소를 반환하며 동시에 제거 |
Object remove() | 리스트의 첫 번째 요소를 제거 |
Object peekFirst() | 리스트의 첫 번째 요소를 반환 |
Object peekLast() | 리스트의 마자막 요소를 반환 |
Object pollFirst() | 리스트의 첫 번째 요소를 반환하면서 동시에 제거 |
Object pollLast() | 리스트의 마자막 요소를 반환하면서 동시게 제거 |
boolean removeFirstOccurrence(Object o ) | 리스트의 첫 번째 일치하는 객체 제거 |
boolean removeLastOccurrence(Object o) | 리스트의 마지막으로 일치하는 객체 제거 |
void addFirst(Object o) | 첫 번째 위치에 추가 |
void addLast(Object o) | 마지막 위치에 추가 |
Stack
메소드 | 설명 |
Object peek() | Stack의 맨 위에 있는 객체를 반환한다, 하지만 Stack에서 빠져나오지 않음(비어있는 상태라면 예외 발생) |
Object poll() | Stack의 맨 위에 있는 객체를 반환하면서 Stack에서 뺌, 비어있다면 예외 발생 |
Object push(Obejct item) | Stack에 객체를 저장한다. |
int search(Object o) | Stack에서 주어진 객체를 찾아서 그 위치를 반환, 못찾으면 -1을 반환, () |
Object pop() | 객체를 반환함 비어있다면 예외 발생 |
Queue,PriorityQueue
메소드 | 설명 |
boolean add(Object o) | 객체를 저장, 성공하면 true 실패하면 false |
Object remove() | Queue에서 객체를 꺼내 반환, 비어있으면 예외 발생 |
Object element() | 요소를 삭제하지않고 가져온다, 비어있다면 예외 발생 |
boolean offer(Object o) | Queue에 객체를 저장, 성공하면 true 실패하면 false |
Object poll() | Queue에서 객체를 반환 비어 있으면 null반환 |
Object peek() | 삭제없이 요소를 가져온다 비어있으면 null반환 |
Set
HashSet
메소드 | 설명 |
boolean add(Object o) | 새로운 객체를 저장 |
boolean addAll(Collection c) | 주어진 컬랙션을 모두 추가한다.(합집합) |
void clear() | 모두 삭제한다. |
boolean contains(Object o) | 지정된 객체가 존재하는지 true,false를 반환 |
boolean containsAll(Collection c) | 주저진 컬렉션에 저장된 모든 객체가 포함되어있는지 true,false를 반환 |
boolean isEmpty | 비어있는지 확인 |
boolean remove(Object o) | 객체를 제거하고 성공하면 true반환 |
boolean removeAll(Collection o) | 컬렉션의 모든 요소를 제거(차집합) |
int size() | 크기를 반환 |
Object[] toArray | 배열로 모두 반환 |
TreeSet
메소드 | 설명 |
boolean add(Object o) | 객체를 추가한다. 성공하면 true,실패하면 false |
boolean addAll(Collection c) | Collection을 모두 추가한다. 성공하면 true, 실패하면 false |
void clear() | 모두 삭제한다. |
boolean contains(Object o) | 객체가 있는지 확인한다. |
boolean containsAll(Collection c) | Collection에 있는 요소가 모두 포함되어있는지 확인한다. |
NavigableSet descendingSet() | 역순으로 반환한다. |
Object first() | 첫번째 요소를 반환한다. |
Oject floor(Object o) | 지정된 객체와 동일한게 있으면 반환하고 없으면 가장 가까운 값의 객체를 반환하고 없으면 null을 반환 |
SortedSet headSet(Object o) | 지정된 객체보다 작은 값들을 반환한다. |
Object higher(Object o) | 지정된 객체보다 큰값중 가장 가까운값을 반환한다. |
Object lower(Object o) | 지정된 객체보다 작은값중 가장 가까운 값을 반환한다. |
Object pollFirst(0 | 첫번째 요소를 반환 |
Object pollLast() | 마지막 요소를 반환 |
int size() | 크기를 반환함 |
Sorted tailSet(Object o) | 지정된 객체보다 큰 값의 객체들을 반환 |
여기서 TreeSst과 HashSet의 차이점을 보면 아래와 같다.
1.삽입 삭제 연산에서 HashSet은 O(1) TreeSet은 ㅒO(logN)
2. TreeSet은 객체들을 정렬함
3. HashSet은 null을 포함할 수 있음
4.HashSet은 중복을 허락, TreeSet은 중복을 허락하지 않음
Map
HashMap,HashTable
메소드 | 설명 |
Obejct put(Objec key,Object value) | 키,벨류를 저장함 |
void putAll(Map m) | Map에 있는 요소를 모두 저장함 |
Object remove(Object) | 키값에 해당하는것을 제거한다 |
Obejct replace(Object key,Object value) | 키값에 해당하는것을 대체한다. |
int size | 크기를 반환한다 |
void clear() | 모두 제거한다. |
boolean containsKey(Object o) | 객체가 키값에 포함되어있으면 true |
boolean containsValue(Object o) | 객체가 벨류값에 포함되어있으면 true |
Object get(Object key) | 키값에 해당하는 벨류를 반환 |
Collection values() | 벨류에 해당하는값들을 컬렉션에 담아 반환 |
HashMap과 HashTable의 차이점은 동기화의 차이점이다.
HashTable은 동기화를 지원해주지만 HashMap은 지원하지 않는다. 그렇기때문에 속도는 HashMap이 더 빠르다.
자바에서는 최신 버전에 해당하는 HashMap을 사용할것을 권장한다.
'Java' 카테고리의 다른 글
자바 Optional (0) | 2021.05.03 |
---|---|
String,StringBuilder,StringBuffer (0) | 2021.03.10 |
자바 synchronized 이해 (0) | 2021.02.24 |
JVM (0) | 2021.02.14 |
Iterator,Iterable (0) | 2021.02.13 |