이전글 보러 가기
인터페이스 | 특징 |
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) 구조입니다.
구현 클래스
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue
주요 메서드
리턴타입 메서드 및 설명
리턴타입 | 메서드명 | 설명 |
boolean | offer(E e) | 제네릭으로 지정한 자료형의 데이터 e를 큐의 마지막 위치에 저장 |
E | peek() | 첫 번째 데이터 리턴(원본 데이터 유지) |
E | poll() | 첫 번째 데이터 리턴(원본 데이터 삭제) |
E | remove() | 첫 번째 데이터 리턴(원본 데이터 삭제) |
- PriorityQueue 클래스
우선순위가 높은 것부터 출력하는 Queue입니다. null을 저장하면 NullPointerException 발생합니다.
Deque(Double-Ended Queue) 인터페이스 (덱 / 디큐)
Queue와 Stack의 특성을 모두 가지고 있는 구조입니다. 양쪽 끝으로 추가와 삭제가 가능합니다.
구현 클래스
ArrayDeque, LinkedList
큐와 디큐의 구현클래스에는 LinkedList가 있습니다. 이전 글에서 LinkedList를 주황색과 초록색으로 표시했었죠. List와 Queue를 모두 구현할 수 있다는 점 기억해 두세요. Set와 Queue에 대한 설명을 마쳤습니다. 다음 글에서는 나머지 컬렉션 프레임워크 Map과 Iterator에 대해 알아봅시다.
'개발언어 > Java : 자바' 카테고리의 다른 글
자바 쉽게 배우기 17 - Arrays (0) | 2023.02.14 |
---|---|
자바 쉽게 배우기 16 - 컬렉션 프레임워크(3) : Map, Iterator (0) | 2023.02.10 |
자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List (0) | 2023.02.03 |
자바 쉽게 배우기 13 - 날짜와 시간(2) (1) | 2023.01.30 |
자바 쉽게 배우기 12 - 날짜와 시간(1) (0) | 2023.01.27 |