티스토리 뷰
728x90
반응형
Set<E>
Set 인터페이스를 구현할 앞으로의 모든 Set 컬렉션 클래스는 다음과 같은 공통점을 갖는다.
- 데이터의 순서가 유지되지 않는다.
- 데이터의 중복 저장을 허용하지 않는다.
Set 컬렉션에 속하는 클래스는 다음과 같다.
- HashSet<E>
- TreeSet<E>
또한, 위 클래스에서 공통으로 사용할 수 있는 메서드는 다음과 같다.
추가로, 앞서 살펴보았던 List 클래스와 마찬가지로 컬렉션 인터페이스의 메서드를 상속받아 사용한다.
HashSet<E>
HashSet 클래스는 Set 클래스 중에 가장 많이 사용되는 클래스이다.
Set 인터페이스를 물려받아 데이터의 순서가 유지되지 않고, 중복 저장을 허용하지 않는다.
해시 알고리즘(Hash Algorithm)을 사용하여 검색 속도가 매우 빠르다는 장점이 있으며,
내부적으로는 HashMap 인스턴스를 이용하여 요소를 저장한다.
간단한 예를 살펴보면 다음과 같다.
import java.util.*;
public class HashSetExample {
public static void main(String[] args) {
// HashSet 생성
HashSet<String> languages = new HashSet<>();
// HashSet에 객체 추가
languages.add("Java");
languages.add("Python");
languages.add("Javascript");
languages.add("C++");
languages.add("Kotlin");
languages.add("Ruby");
languages.add("Java"); // 중복
System.out.println(languages.add("Java")); // false 반환
System.out.println(languages.add("Java2")); // true 반환
// 반복자 생성하여 it에 할당
Iterator it = languages.iterator();
// 반복자를 통해 HashSet을 순회하며 요소를 출력
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
위 코드를 실제로 작동시켜 보면 입력한 순서와 상관없이 결과가 출력되는 것을 알 수 있다.
TreeSet<E>
TreeSet 클래스는 이진 탐색 트리 형태로 데이터를 저장한다.
이진 탐색 트리란 정렬과 검색에 특화된 자료구조로서, 자세한 사항은 나중에 배운다.
TreeSet 역시 Set 인터페이스를 물려받아 데이터의 순서가 유지되지 않고, 중복 저장을 허용하지 않는다.
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
// TreeSet 생성
TreeSet<String> workers = new TreeSet<>();
// TreeSet에 요소 추가
workers.add("Lee Java");
workers.add("Park Hacker");
workers.add("Kim Coding");
System.out.println(workers);
System.out.println(workers.first());
System.out.println(workers.last());
System.out.println(workers.higher("Lee"));
System.out.println(workers.subSet("Kim", "Park"));
}
}
위 코드를 작성시켜보면, HashSet 때와는 다르게 사전 편찬 순에 따라 오름차순으로 정렬된 것을 확인할 수 있다.
이는 TreeSet의 기본 정렬 방식이 오름차순이기 때문이다.
반응형
'Java+Spring > Java' 카테고리의 다른 글
[Java]람다(Lambda), 함수형 인터페이스(Functional Interface), 메서드 레퍼런스(Method Reference) (0) | 2022.07.20 |
---|---|
[Java]열거형(enum), 애너테이션(Annotation) (0) | 2022.07.20 |
[Java]Map<K, V>, HashMap<K, V>, HashTable<K, V> (2) | 2022.07.15 |
[Java]Iterator (0) | 2022.07.15 |
[Java]List<E>, ArrayList<E>, LinkedList<E> (0) | 2022.07.15 |
[Java]컬렉션 프레임워크(Collection Framework) (0) | 2022.07.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 맛집
- 알고리즘
- BOJ
- 남미
- 지지
- Algorithm
- 자바
- 기술면접
- Backjoon
- 칼이사
- a6000
- 야경
- 세계일주
- RX100M5
- 스트림
- 여행
- Python
- 스프링
- 백준
- 세모
- 면접 준비
- 리스트
- 중남미
- 세계여행
- 동적계획법
- spring
- 파이썬
- 유럽여행
- java
- 유럽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함