java
이 자습서에서는 예제를 통해 Java TreeSet 클래스와 다양한 작업 및 메서드에 대해 알아봅니다.
TreeSet
Java 컬렉션 프레임워크의 클래스는 트리 데이터 구조의 기능을 제공합니다.
NavigableSet 인터페이스를 확장합니다.
<시간>
트리 세트를 생성하려면 java.util.TreeSet
를 가져와야 합니다. 먼저 포장하십시오.
패키지를 가져오면 다음은 TreeSet
을 만드는 방법입니다. 자바로.
TreeSet<Integer> numbers = new TreeSet<>();
여기에서 TreeSet
를 만들었습니다. 아무 주장 없이. 이 경우 TreeSet
의 요소는 자연스럽게 정렬됩니다(오름차순).
그러나 Comparator
을 사용하여 요소 정렬을 사용자 정의할 수 있습니다. 상호 작용. 이 튜토리얼의 뒷부분에서 이에 대해 알아볼 것입니다.
TreeSet
클래스는 집합에서 다양한 작업을 수행할 수 있는 다양한 메서드를 제공합니다.
add()
- 지정된 요소를 집합에 삽입addAll()
- 지정된 컬렉션의 모든 요소를 집합에 삽입합니다.예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
// Using the add() method
evenNumbers.add(2);
evenNumbers.add(4);
evenNumbers.add(6);
System.out.println("TreeSet: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
// Using the addAll() method
numbers.addAll(evenNumbers);
System.out.println("New TreeSet: " + numbers);
}
}
출력
TreeSet: [2, 4, 6] New TreeSet: [1, 2, 4, 6]<시간>
트리 세트의 요소에 액세스하려면 iterator()
를 사용할 수 있습니다. 방법. 이 방법을 사용하려면 java.util.Iterator
을 가져와야 합니다. 패키지. 예를 들어,
import java.util.TreeSet;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Calling iterator() method
Iterator<Integer> iterate = numbers.iterator();
System.out.print("TreeSet using Iterator: ");
// Accessing elements
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
}
}
출력
TreeSet: [2, 5, 6] TreeSet using Iterator: 2, 5, 6,<시간>
remove()
- 세트에서 지정된 요소를 제거합니다.removeAll()
- 집합에서 모든 요소를 제거합니다.예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using the remove() method
boolean value1 = numbers.remove(5);
System.out.println("Is 5 removed? " + value1);
// Using the removeAll() method
boolean value2 = numbers.removeAll(numbers);
System.out.println("Are all elements removed? " + value2);
}
}
출력
TreeSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true<시간>
TreeSet
이후 클래스는 NavigableSet
을 구현합니다. , 트리 세트의 요소를 탐색하는 다양한 방법을 제공합니다.
first()
- 집합의 첫 번째 요소를 반환합니다.last()
- 집합의 마지막 요소를 반환합니다.예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using the first() method
int first = numbers.first();
System.out.println("First Number: " + first);
// Using the last() method
int last = numbers.last();
System.out.println("Last Number: " + last);
}
}
출력
TreeSet: [2, 5, 6] First Number: 2 Last Number: 6<시간>
element
보다 큰 요소 중 가장 낮은 요소를 반환합니다. .
element
보다 작은 요소 중 가장 큰 요소를 반환합니다. .element
를 반환합니다. 인수로 전달되었습니다.element
보다 작은 요소 중 가장 큰 요소를 반환합니다. . 요소 전달된 트리 세트에 존재하는 경우 element
를 반환합니다. 인수로 전달되었습니다.예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using higher()
System.out.println("Using higher: " + numbers.higher(4));
// Using lower()
System.out.println("Using lower: " + numbers.lower(4));
// Using ceiling()
System.out.println("Using ceiling: " + numbers.ceiling(4));
// Using floor()
System.out.println("Using floor: " + numbers.floor(3));
}
}
출력
TreeSet: [2, 4, 5, 6] Using higher: 5 Using lower: 2 Using ceiling: 4 Using floor: 2<시간>
pollFirst()
- 집합에서 첫 번째 요소를 반환하고 제거합니다.pollLast()
- 집합에서 마지막 요소를 반환하고 제거합니다.예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using pollFirst()
System.out.println("Removed First Element: " + numbers.pollFirst());
// Using pollLast()
System.out.println("Removed Last Element: " + numbers.pollLast());
System.out.println("New TreeSet: " + numbers);
}
}
출력
TreeSet: [2, 4, 5, 6] Removed First Element: 2 Removed Last Element: 6 New TreeSet: [4, 5]<시간>
headSet()
메소드는 지정된 요소 이전의 트리 세트의 모든 요소를 리턴합니다. (인수로 전달됨).
부울 값 매개변수는 선택 사항입니다. 기본값은 false
입니다. .
true
인 경우 booleanValue로 전달됩니다. , 메서드는 지정된 요소를 포함하여 지정된 요소 이전의 모든 요소를 반환합니다.
예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using headSet() with default boolean value
System.out.println("Using headSet without boolean value: " + numbers.headSet(5));
// Using headSet() with specified boolean value
System.out.println("Using headSet with boolean value: " + numbers.headSet(5, true));
}
}
출력
TreeSet: [2, 4, 5, 6] Using headSet without boolean value: [2, 4] Using headSet with boolean value: [2, 4, 5]<시간>
tailSet()
메소드는 지정된 요소 뒤에 있는 트리 세트의 모든 요소를 리턴합니다. (매개변수로 전달) 지정된 요소 포함 .
부울 값 매개변수는 선택 사항입니다. 기본값은 true
입니다. .
false
인 경우 booleanValue로 전달됩니다. , 메서드는 지정된 요소 이후의 모든 요소를 반환합니다. 지정된 요소를 포함하지 않고 .
예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using tailSet() with default boolean value
System.out.println("Using tailSet without boolean value: " + numbers.tailSet(4));
// Using tailSet() with specified boolean value
System.out.println("Using tailSet with boolean value: " + numbers.tailSet(4, false));
}
}
출력
TreeSet: [2, 4, 5, 6] Using tailSet without boolean value: [4, 5, 6] Using tailSet with boolean value: [5, 6]<시간>
subSet()
메소드는 e1 사이의 모든 요소를 반환합니다. 및 e2 e1 포함 .
bv1 및 bv2 선택적 매개변수입니다. bv1의 기본값 true
입니다. , 기본값 bv2 false
입니다. .
false
인 경우 bv1로 전달됩니다. , 메서드는 e1 사이의 모든 요소를 반환합니다. 및 e2 e1
을 포함하지 않음 .
true
인 경우 bv2로 전달됩니다. , 메서드는 e1 사이의 모든 요소를 반환합니다. 및 e2 , e1 포함 .
예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using subSet() with default boolean value
System.out.println("Using subSet without boolean value: " + numbers.subSet(4, 6));
// Using subSet() with specified boolean value
System.out.println("Using subSet with boolean value: " + numbers.subSet(4, false, 6, true));
}
}
출력
TreeSet: [2, 4, 5, 6] Using subSet without boolean value: [4, 5] Using subSet with boolean value: [5, 6]<시간>
TreeSet
의 메소드 다양한 집합 작업을 수행하는 데 사용할 수도 있습니다.
두 집합 간의 합집합을 수행하기 위해 addAll()
을 사용합니다. 방법. 예를 들어,
import java.util.TreeSet;;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("TreeSet1: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("TreeSet2: " + numbers);
// Union of two sets
numbers.addAll(evenNumbers);
System.out.println("Union is: " + numbers);
}
}
출력
TreeSet1: [2, 4] TreeSet2: [1, 2, 3] Union is: [1, 2, 3, 4]<시간>
두 세트 사이의 교집합을 수행하기 위해 retainAll()
을 사용합니다. 방법. 예를 들어,
import java.util.TreeSet;;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("TreeSet1: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("TreeSet2: " + numbers);
// Intersection of two sets
numbers.retainAll(evenNumbers);
System.out.println("Intersection is: " + numbers);
}
}
출력
TreeSet1: [2, 4] TreeSet2: [1, 2, 3] Intersection is: [2]<시간>
두 세트의 차이를 계산하기 위해 removeAll()
을 사용할 수 있습니다. 방법. 예를 들어,
import java.util.TreeSet;;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("TreeSet1: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("TreeSet2: " + numbers);
// Difference between two sets
numbers.removeAll(evenNumbers);
System.out.println("Difference is: " + numbers);
}
}
출력
TreeSet1: [2, 4] TreeSet2: [1, 2, 3, 4] Difference is: [1, 3]<시간>
집합이 다른 집합의 하위 집합인지 확인하려면 containsAll()
을 사용합니다. 방법. 예를 들어,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("TreeSet1: " + numbers);
TreeSet<Integer> primeNumbers = new TreeSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
System.out.println("TreeSet2: " + primeNumbers);
// Check if primeNumbers is subset of numbers
boolean result = numbers.containsAll(primeNumbers);
System.out.println("Is TreeSet2 subset of TreeSet1? " + result);
}
}
출력
TreeSet1: [1, 2, 3, 4] TreeSet2: [2, 3] Is TreeSet2 subset of TreeSet1? True<시간>
메소드 | 설명 |
---|---|
clone() | TreeSet의 복사본을 만듭니다. |
contains() | 트리셋에서 지정된 요소를 검색하고 부울 결과를 반환합니다. |
isEmpty() | TreeSet 인지 확인합니다. 비어 있습니다 |
size() | TreeSet 의 크기를 반환합니다. |
clear() | TreeSet 에서 모든 요소를 제거합니다. |
자세한 내용은 Java TreeSet(공식 Java 설명서)를 참조하십시오.
<시간>
TreeSet
HashSet
뿐만 아니라 Set
구현 상호 작용. 그러나 그들 사이에는 몇 가지 차이점이 있습니다.
HashSet
과 달리 , TreeSet
의 요소 어떤 순서로 저장됩니다. TreeSet
때문입니다. SortedSet
구현 인터페이스도 제공합니다.TreeSet
쉬운 탐색을 위한 몇 가지 방법을 제공합니다. 예:first()
, last()
, headSet(
), tailSet()
등. TreeSet
때문입니다. NavigableSet
도 구현합니다. 인터페이스.HashSet
TreeSet
보다 빠름 추가, 제거, 포함 및 크기 조정과 같은 기본 작업을 위한 것입니다.위의 모든 예에서 트리 세트 요소는 자연스럽게 정렬됩니다. 그러나 요소의 순서를 사용자 지정할 수도 있습니다.
이를 위해 우리는 트리 세트의 어떤 요소가 정렬되었는지를 기반으로 자체 비교기 클래스를 생성해야 합니다. 예를 들어,
import java.util.TreeSet;
import java.util.Comparator;
class Main {
public static void main(String[] args) {
// Creating a tree set with customized comparator
TreeSet<String> animals = new TreeSet<>(new CustomComparator());
animals.add("Dog");
animals.add("Zebra");
animals.add("Cat");
animals.add("Horse");
System.out.println("TreeSet: " + animals);
}
// Creating a comparator class
public static class CustomComparator implements Comparator<String> {
@Override
public int compare(String animal1, String animal2) {
int value = animal1.compareTo(animal2);
// elements are sorted in reverse order
if (value > 0) {
return -1;
}
else if (value < 0) {
return 1;
}
else {
return 0;
}
}
}
}
출력
TreeSet: [Zebra, Horse, Dog, Cat]
위의 예에서 CustomComparator를 전달하는 트리 세트를 만들었습니다. 클래스를 인수로 사용합니다.
CustomComparator 클래스는 Comparator
을 구현합니다. 인터페이스.
그런 다음 compare()
을 재정의합니다. 방법. 이 메서드는 이제 요소를 역순으로 정렬합니다.
자세한 내용은 Java Comparator(공식 Java 설명서)를 참조하십시오.
java
자바 트리셋 이 자습서에서는 예제를 통해 Java TreeSet 클래스와 다양한 작업 및 메서드에 대해 알아봅니다. TreeSet Java 컬렉션 프레임워크의 클래스는 트리 데이터 구조의 기능을 제공합니다. NavigableSet 인터페이스를 확장합니다. TreeSet 만들기 트리 세트를 생성하려면 java.util.TreeSet를 가져와야 합니다. 먼저 포장하십시오. 패키지를 가져오면 다음은 TreeSet을 만드는 방법입니다. 자바로. TreeSet<Integer> numbers = new TreeSe
일반적으로 Numbers로 작업할 때 byte, int, long, double 등과 같은 기본 데이터 유형을 사용합니다. 예시 int i = 5000; float gpa = 13.65f; double mask = 125; 그러나 개발 과정에서 기본 데이터 유형 대신 객체를 사용해야 하는 상황을 접하게 됩니다. 이를 달성하기 위해 Java는 래퍼 클래스를 제공합니다. . 모든 래퍼 클래스(Integer, Long, Byte, Double, Float, Short)는 추상 클래스 Number의 하위 클래스입니다. 래퍼 클래