본문 바로가기
개발언어/Java : 자바

자바 쉽게 배우기 15 - 컬렉션 프레임워크(2) : Set, Queue

by 개발자D 2023. 2. 8.

컬렉션 프레임워크(2) - SET, Queue

이전글 보러 가기

 

자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List

컬렉션 프레임워크 컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배열보다 많은 기능을 가지고 있어 자주 사용됩니다. jdk1.2에 등장했

devdharu.tistory.com

인터페이스 특징
List 순서가 있는 데이터의 집합으로 순서로 구분이 가능하기 때문에 데이터의 중복을 허용합니다.

구현 클래스 : ArrayList, LinkedList, Stack, Vector 등
Set 순서가 없는 데이터의 집합으로 List와 달리 데이터의 중복을 허용하지 않습니다.

구현 클래스 : HashSet, TreeSet 등
Map 키(key)와 값(vallue)의 쌍(pair)으로 이루어진 데이터의 집합입니다.
순서가 없으며 키의 중복을 허용하지 않고, 키로 구분이 가능하기 때문에 값의 중복을 허용합니다.

구현클래스 : HashMap, TreeMap, Hashtable, Properties 등

 


Collection 인터페이스

List와 Set 인터페이스가 Collection을 상속받으며 Map 인터페이스는 포함되지 않습니다.

 

주요 메서드

리턴타입 메서드명 설명
boolean add(E e) 지정된 객체를 추가
boolean addAll(Collection<? extends E> c) 지정된 자료형을 상속받는 컬렉션 c의 객체 전체를 추가
void clear() 모든 객체 삭제
boolean contains(Object o) 지정된 객체가 컬렉션에 있는지 확인
boolean containsAll(Collection<?> c) 지정된 자료형의 컬렉션 c의 데이터들이 모두 컬렉션에 있는지 확인
boolean equals(Object o) 동일한 컬렉션인지 비교
int hashCode() 컬렉션의 해쉬코드 반환
boolean isEmpty() 컬렉션이 비어있는지 확인
Iterator<E> iterator() 컬렉션의 iterator 반환
boolean remove(Object o) 지정된 데이터를 삭제
boolean removeAll(Collection<?> c) 지정된 컬렉션 객체 삭제
boolean retainAll(Collection<?> c) 지정된 컬렉션에 포함된 객체만들 남기고 다른 객체들은 삭제
int size() 저장된 객체 개수 반환
Object[] toArray() 객체를 객체배열로 반환
<T> T[] toArray(T[] a) 지정된 배열에 컬레션 객체를 저장해서 반환

 

해쉬코드란 무엇인가요?

- JVM에서 다른 객체와의 구분을 위해 사용하는 식별값입니다.

 


Set 인터페이스

Set은 순서가 없는 데이터의 집합으로 List와 달리 데이터의 중복을 허용하지 않습니다. 중복된 값을 넣을 추가 해도 집합에는 변화가 없습니다. Set 인터페이스에는 전용 메서드가 따로 선언되어 있지 않고 Collection을 상속받기 때문에 Collection메서드만 사용합니다.

 

- HashSet 클래스

Set을 구현한 클래스들 중 가장 많이 사용되는 클래스입니다.

 

생성자

HashSet() : 기본 HashSet 인스턴스 생성(기본 용량 16 / 로드 팩터 0.75)

HashSet(Collection <? extends E> c) : 제네릭으로 지정한 자료형 E를 상속받는 데이터들이 저장되어 있는 Collection c로 HashSet 인스턴스 생성

HashSet(int initialCapacity) : 지정한 initialCapacity를 초기 용량으로 하는 HashSet 인스턴스 생성

HashSet(int initialCapacity, float loadFactor) : 지정한 initialCapacity를 초기용량으로, 지정한 loadFactor를 로드팩터로 설정하여 HashSet 인스턴스 생성

 

❓ 로드팩터란 무엇인가요? 

컬렉션 용량을 두배로 늘리게 되는 임계치로 기본값은 0.75입니다.

예시 ) 로드팩터가 0.75면 컬렉션 저장공간의 75%가 채워졌을 때 용량이 두배로 늘어납니다.

 


Queue 인터페이스 (큐)

Stack과 반대로 FIFO(First In First Out) 구조입니다.

 

구현 클래스

AbstractQueueArrayBlockingQueueArrayDequeConcurrentLinkedDequeConcurrentLinkedQueueDelayQueueLinkedBlockingDequeLinkedBlockingQueueLinkedListLinkedTransferQueuePriorityBlockingQueuePriorityQueueSynchronousQueue

 

주요 메서드

리턴타입 메서드 및 설명

리턴타입 메서드명 설명
boolean offer(E e)  제네릭으로 지정한 자료형의 데이터 e를 큐의 마지막 위치에 저장
E peek() 첫 번째 데이터 리턴(원본 데이터 유지)
poll() 첫 번째 데이터 리턴(원본 데이터 삭제)
E remove() 첫 번째 데이터 리턴(원본 데이터 삭제)

 

- PriorityQueue 클래스

우선순위가 높은 것부터 출력하는 Queue입니다. null을 저장하면 NullPointerException 발생합니다.

 

Deque(Double-Ended Queue) 인터페이스 (덱 / 디큐)

Queue와 Stack의 특성을 모두 가지고 있는 구조입니다. 양쪽 끝으로 추가와 삭제가 가능합니다.

 

구현 클래스

ArrayDeque, LinkedList


큐와 디큐의 구현클래스에는 LinkedList가 있습니다. 이전 글에서 LinkedList를 주황색과 초록색으로 표시했었죠. List와 Queue를 모두 구현할 수 있다는 점 기억해 두세요. Set와 Queue에 대한 설명을 마쳤습니다. 다음 글에서는 나머지 컬렉션 프레임워크 Map과 Iterator에 대해 알아봅시다.

 

자바 쉽게 배우기 16 - 컬렉션 프레임워크(3) : Map, Iterator

이전글 보러 가기 자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List 컬렉션 프레임워크 컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배

devdharu.tistory.com