YOUNGJIN

자바의 정석 11장 ( Collection ) 본문

Study/Java

자바의 정석 11장 ( Collection )

Youngjin Noh 2023. 1. 15. 15:05

Collection: 다수의 데이터

 

모든 Collection 클래스들은 아래의 3가지의 인터페이스 중 하나를 구현하고 있다.

List: 순서가 있는 데이터의 집합. 데이터의 중복 허용. (ArrayList, LinkedList)

Set: 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않음. (HashSet, TreeSet)

Map: key와 value의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. (HashMap, LinkedHashMap, TreeMap)

 

ArrayList vs LinkedList

순차적으로 데이터를 추가/삭제하는 경우, ArrayList가 빠르다. (일반 배열과 구조가 유사)

비순차적으로 데이터를 추가/삭제하는 경우, LinkedList가 빠르다.

 

PriorityQueue: Queue 인터페이스의 구현체 중의 하나로, 저장한 순서에 관계없이 우선순위가 높은 것부터 꺼내게 된다는 특징이 있다. 저장공간으로 배열을 사용하며, 각 요소를 힙이라는 자료구조의 형태로 저장한다.

Queue pq=new PriorityQueue();

Deque: Queue의 자식으로, Queue와 달리 양쪽 끝 모두에 추가/삭제가 가능하다. 구현체로는 ArrayDeque와 LinkedList가 있다.

Queue와 Deque는 인터페이스, PriorityQueue와 ArrayDeque 등은 그것을 구현한 클래스.

 

Iterator: 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화시키기 위해 정의된 인터페이스. Collection 인터페이스에는 Iterator를 반환하는 iterator()가 정의됨.

List list=new ArrayList();
Iterator it=list.iterator();
while(it.hasNext()){
	System.out.println(it.next());
}

 

Arrays: 배열을 다루는데 유용한 메서드가 정의되어 있음.

배열의 복사 - copyOf(), copyOfRange()

배열 채우기 - fill(), setAll()

배열의 정렬과 검색 - sort(), binarySearch()

 

Comparable: 기본 정렬기준을 구현하는데 사용

Comparator: 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용

public interface Comparator{
	int compare(Object o1,Object o2);
}

public interface Comparable{
	int compareTo(Object o);
}

HashSet vs TreeSet vs LinkedHashSet

HashSet: 데이터 중복X

TreeSet: HashSet + 저절로 오름차순으로 데이터를 정렬, 이진검색트리 형태로 저장

LinkedHashSet: HashSet + 입력된 순서대로 데이터를 정렬

 

TreeMap: HashMap + 저절로 오름차순으로 데이터를 정렬, 이진검색트리 형태로 저장

LinkedHashMap: HashMap + 입력된 순서대로 데이터를 정렬

 

Collections: 컬렉션을 다루는데 유용한 메서드가 정의되어 있음.

 

 

 

Comments