반응형
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 | 31 |
Tags
- CSS
- CMD
- input
- Button
- 이클립스
- string
- HashMap
- javascript
- ArrayList
- html
- Array
- list
- vscode
- Eclipse
- date
- 자바스크립트
- table
- 자바
- 배열
- Java
- json
- replace
- Visual Studio Code
- map
- 인텔리제이
- 이탈리아
- IntelliJ
- js
- 문자열
- 정규식
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