반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- input
- ArrayList
- json
- CMD
- 인텔리제이
- map
- 자바
- CSS
- javascript
- string
- Button
- 이탈리아
- table
- Visual Studio Code
- list
- Array
- Java
- date
- IntelliJ
- 문자열
- js
- 이클립스
- HashMap
- 배열
- html
- vscode
- 정규식
- Eclipse
- replace
- 자바스크립트
Archives
- Today
- Total
어제 오늘 내일
[Java TreeSet] 주요 메소드 정리 및 활용 예제 본문
TreeSet은 NavigableSet을 구현한 클래스이며, 내부적으로 이진 탐색 트리(Red-Black Tree) 구조를 사용합니다. 따라서 데이터가 자동으로 정렬된 상태로 저장되며, 범위 검색이나 정렬이 필요한 경우 유용합니다.
1. add()
import java.util.TreeSet;
public class TreeSetAdd {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(30);
set.add(10);
set.add(20);
set.add(10); // 중복은 무시
System.out.println(set); // [10, 20, 30]
}
}
중복은 허용하지 않고, 항상 오름차순 정렬된 상태로 저장됩니다.
2. remove()
import java.util.TreeSet;
public class TreeSetRemove {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<>();
set.add("kim");
set.add("lee");
set.add("park");
boolean removed = set.remove("lee");
System.out.println(removed); // true
System.out.println(set); // [kim, park]
}
}
특정 요소를 삭제하고 성공 여부를 반환합니다.
3. contains()
import java.util.TreeSet;
public class TreeSetContains {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<>();
set.add("apple");
set.add("banana");
System.out.println(set.contains("apple")); // true
System.out.println(set.contains("cherry")); // false
}
}
특정 값의 존재 여부를 확인합니다.
4. first(), last()
import java.util.TreeSet;
public class TreeSetFirstLast {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(5);
set.add(1);
set.add(9);
System.out.println(set.first()); // 1
System.out.println(set.last()); // 9
}
}
가장 작은 값과 가장 큰 값을 바로 가져올 수 있습니다.
5. higher(), lower(), ceiling(), floor()
import java.util.TreeSet;
public class TreeSetSearch {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(10);
set.add(20);
set.add(30);
System.out.println(set.higher(20)); // 30 (보다 큰 값 중 최소)
System.out.println(set.lower(20)); // 10 (보다 작은 값 중 최대)
System.out.println(set.ceiling(20)); // 20 (이상인 값 중 최소)
System.out.println(set.floor(25)); // 20 (이하인 값 중 최대)
}
}
트리 구조라서 인접 원소를 찾는 데 매우 빠릅니다.
6. subSet(), headSet(), tailSet()
import java.util.*;
public class TreeSetRange {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>(Arrays.asList(10,20,30,40,50));
System.out.println(set.subSet(20, 50)); // [20, 30, 40]
System.out.println(set.headSet(30)); // [10, 20]
System.out.println(set.tailSet(30)); // [30, 40, 50]
}
}
특정 범위의 데이터를 쉽게 잘라낼 수 있습니다.
7. clear(), size(), isEmpty()
import java.util.TreeSet;
public class TreeSetClearSize {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<>();
set.add("kim");
set.add("lee");
System.out.println(set.size()); // 2
System.out.println(set.isEmpty()); // false
set.clear();
System.out.println(set.isEmpty()); // true
}
}
요소 개수 확인, 비었는지 체크, 전체 삭제를 할 수 있습니다.
결론
- TreeSet은 자동 정렬 + 중복 허용 안 함
- 탐색 관련 메소드가 풍부해 범위 검색, 순차 탐색에 강점
- 주요 메소드:
add,remove,contains,first,last,higher,lower,ceiling,floor,subSet,headSet,tailSet,clear,size,isEmpty - 순서 유지가 필요하다면
LinkedHashSet, 정렬된 결과가 필요하다면TreeSet이 적합
반응형
'IT > Java' 카테고리의 다른 글
| [Java HashSet] 정렬 방법과 활용 예제 (0) | 2025.10.10 |
|---|---|
| [Java 컬렉션] HashMap vs HashSet vs TreeSet 비교 (0) | 2025.10.09 |
| [Java LinkedHashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 |
| [Java HashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 |
| [Java HashSet] 초기화 방법 총정리 (0) | 2025.10.07 |
Comments