1. SET
자료의 중복을 허용하지 않는다.
- 동일 값을 추가시 새로운 값을 무시하고 기존 값을 유지한다.
Set<Integer> set = Set.of(10, 30, 15, 40, 25, 55, 10, 30);
System.out.println(set);
// 결과
/*
Exception in thread "main" java.lang.IllegalArgumentException: duplicate element: 10
at java.base/java.util.ImmutableCollections$SetN.<init>(ImmutableCollections.java:918)
at java.base/java.util.Set.of(Set.java:612)
at Main.main(Main.java:5)
*/
IllegalArgumentException - 전달된 인수가 잘못되었을 때 발생
duplicate element: 10 - 10이라는 숫자 인수가 잘 못 들어옴
📝 중복을 허용하지 않는 이유
Set의 동작은 내부적으로
해시테이블 / 블랙-레드 트리의 자료구조를 사용하는데
이것들은 중복을 허용하지 않는다.
※hashtable의 중복체크 방법 예시 및 자료
1. 인자를 받는다.
2. 받은 인자를 해쉬함수를 사용해 정수로 변환한다.
3. 이 값을 이용해 버킷(bucket)에 접근.
4. 버킷에 있는 값을 비교한다.
위와 같은 방법을 통해 기존 값이랑 중복이 되는지 체크한다.
관련 링크: https://mymyrecord.tistory.com/32
2. HashSet
기존 Set의 중복 허용 금지 + 자료의 삽입 순서를 보장하지 않는다.
List<Integer> numbers = List.of(10, 30, 15, 40, 25, 55);
Set<Integer> hashSet = new HashSet<>(numbers);
System.out.println(hashSet); // [55, 40, 25, 10, 30, 15]
3. LinkedSet
기존 Set의 중복 허용 금지 + 자료의 삽입 순서를 보장한다.
List<Integer> numbers = List.of(10, 30, 15, 40, 25, 55);
Set<Integer> linkedHashSet = new LinkedHashSet<>(numbers);
System.out.println(linkedHashSet); // [10, 30, 15, 40, 25, 55]
4. TreeSet
기존 Set의 중복 허용 금지 + 자료가 오름차순으로 정렬된다.
List<Integer> numbers = List.of(10, 30, 15, 40, 25, 55);
Set<Integer> treeSet = new TreeSet<>(numbers);
System.out.println(treeSet); // [10, 15, 25, 30, 40, 55]'Java' 카테고리의 다른 글
| [Java] Spring의 탄생 배경 (0) | 2025.12.11 |
|---|---|
| [Java] HashSet (0) | 2025.12.07 |
| [Java] Stream - map과 flatMap (0) | 2025.11.26 |
| [Java] 단일 책임 원칙(SRP)과 개방-폐쇄 원칙(OCP) (0) | 2025.11.25 |
| [Java] 싱글톤 패턴 (0) | 2025.11.18 |