본문 바로가기
Java

Collection Framework 정리표

by 스르나 2021. 2. 25.

자바 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