자바에서는 NavigableSet 의 하위 유형입니다. SortedSet 인터페이스. 이를 통해 주어진 요소 내림차순 반복 및 기타 항목에 대해 가장 가까운 일치 항목을 얻는 것과 같은 다양한 작업을 수행할 수 있습니다. 세트의 요소를 탐색하는 방법을 제공합니다.
예를 들어 NavigableSet 인터페이스를 사용하면 오름차순만 지원하는 SortedSet와 달리 오름차순 및 내림차순으로 집합을 탐색할 수 있습니다. NavigableSet 인터페이스를 구현하는 클래스는 다음과 같습니다. 트리세트 그리고 동시 건너뛰기 목록 집합
- NavigableSet은 SortedSet을 확장하므로 first() last() headSet() tailSet() 등과 같은 메서드를 제공합니다.
- 오름차순과 내림차순 양방향으로 탐색할 수 있습니다.
- NavigableSet의 가장 일반적인 구현은 TreeSet입니다.
예: 이 예에서는 TreeSet을 사용하여 NavigableSet을 생성하고 여기에 요소를 추가하여 자동으로 오름차순으로 정렬하는 방법을 보여줍니다.
Java
// Java program to demonstrates // the working of NavigableSet import java.util.*; public class Geeks { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); // Add elements to the set ns.add(10); ns.add(20); ns.add(30); ns.add(40); ns.add(50); System.out.println('Navigable Set: ' + ns); } }
산출
Navigable Set: [10 20 30 40 50]
C++ int를 문자열로 변환
아래 다이어그램은 세트와 관련된 Java 컬렉션 프레임워크의 상속 구조를 보여줍니다.
TreeSet은 다음을 구현하는 클래스입니다. NavigableSet 이는 차례로 확장된 SortedSet을 확장합니다. 세트 .
NavigableSet 선언
Java에서는 NavigableSet 선언을 다음과 같이 선언할 수 있습니다.
NavigableSet
세트이름;
메모: ' Type'은 집합에 있는 요소의 유형(예: 정수 문자열 등)이고 setName은 변수의 이름입니다.
NavigableSet 객체 생성
NavigableSet은 인터페이스이기 때문에 직접 생성할 수 없습니다. 대신 우리는 다음과 같은 클래스를 사용합니다. 트리세트 그것을 구현하는 거죠. 제네릭의 도움으로 우리는 세트가 저장할 객체의 유형을 정의할 수 있습니다. 이 유형 안전 세트는 다음과 같이 정의할 수 있습니다.
NavigableSet
세트 = 새로운 TreeSet ();
예: 이 예제에서는 descedingSet() tailSet() lower() pollFirst() 및 pollLast()와 같은 NavigableSet의 다양한 메서드를 사용하여 정렬된 집합을 정상 순서와 역순으로 조작하고 탐색하는 방법을 보여줍니다.
Java// Java Program to demostrates the // working of various methods of NavigableSet import java.util.NavigableSet; import java.util.TreeSet; public class Geeks { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); ns.add(0); ns.add(1); ns.add(2); ns.add(3); ns.add(4); ns.add(5); ns.add(6); // Get a reverse view of the navigable set NavigableSet<Integer> revNs = ns.descendingSet(); // Print the normal and reverse views System.out.println('Normal order: ' + ns); System.out.println('Reverse order: ' + revNs); NavigableSet<Integer> t = ns.tailSet(3 true); System.out.println('3 or more: ' + t); System.out.println('lower(3): ' + ns.lower(3)); System.out.println('floor(3): ' + ns.floor(3)); System.out.println('higher(3): ' + ns.higher(3)); System.out.println('ceiling(3): ' + ns.ceiling(3)); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollLast(): ' + ns.pollLast()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('pollLast(): ' + ns.pollLast()); } }
산출:
NavigableSet에서 다양한 작업 수행
1. 요소 추가: 우리는 추가하다() NavigableSet에 요소를 삽입하는 메서드입니다. 요소는 정렬된 순서로 저장되며 중복은 허용되지 않으며 NavigableSet에서는 null 값도 허용되지 않습니다.
예: 이 예에서는 중복이 무시되고 요소가 오름차순으로 정렬되는 add()를 사용하여 NavigableSet에 요소를 추가하는 방법을 보여줍니다.
Java// Java Program to demonstrates the working of add() import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('A'); System.out.println('NavigableSet: ' + ts); } }
산출
NavigableSet: [A B C]
2. 요소에 접근하기: 요소를 추가한 후 요소에 액세스하려면 다음과 같은 내장 메서드를 사용할 수 있습니다. 포함() 첫 번째() 마지막() 등.
예: 이 예제에서는 요소의 존재를 확인하고 첫 번째 요소와 마지막 요소를 검색하는 NavigableSet에 요소를 추가하는 방법을 보여줍니다.
비교 가능한 자바Java
// Java program to demonstrates the // working of contains() first() and last() method import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('A'); System.out.println('NavigableSet: ' + ts); String s = 'D'; // Check if the above string exists in // the NavigableSet or not System.out.println('D exists in the NavigableSet?: ' + ts.contains(s)); // Print the first element in // the NavigableSet System.out.println('First Element of NavigableSet: ' + ts.first()); // Print the last element in // the NavigableSet System.out.println('Last Element of NavigableSet: ' + ts.last()); } }
산출
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. 요소 제거: 다음을 사용하여 NavigableSet에서 값을 제거할 수 있습니다. 제거하다() 폴퍼스트() 폴마지막() .
예: 이 예에서는 NavigableSet에서 요소를 제거하는 방법을 보여줍니다.
10억에는 0이 몇 개나 있나요?Java
// Java Program to demonstrates the working of remove() // pollFirst() and pollLast() method import java.io.*; import java.util.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('B'); ts.add('D'); ts.add('E'); System.out.println('NavigableSet: ' + ts); // Removing the element b ts.remove('B'); System.out.println('After removing element ' + ts); // Remove the First element of TreeSet ts.pollFirst(); System.out.println( 'After the removal of First Element ' + ts); // Remove the Last element of TreeSet ts.pollLast(); System.out.println( 'After the removal of Last Element ' + ts); } }
산출
NavigableSet: [A B C D E] After removing element [A C D E] After the removal of First Element [C D E] After the removal of Last Element [C D]
4. 반복 요소: NavigableSet을 반복하는 방법에는 여러 가지가 있습니다. 가장 유명한 것은 다음을 사용하는 것입니다. for 루프가 향상되었습니다.
예: 이 예제에서는 NavigableSet에 요소를 추가하고 이를 오름차순으로 반복하는 방법을 보여줍니다.
Java// Java Program to iterate through NavigableSet import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('C'); ts.add('D'); ts.add('E'); ts.add('A'); ts.add('B'); ts.add('Z'); // Iterating though the NavigableSet for (String i : ts) System.out.print(i + ' '); } }
산출
A B C D E Z
행동 양식
다음은 NavigableSet 인터페이스에 있는 메소드입니다.
행동 양식 | 설명 |
|---|---|
| 천장(E e) | 이 집합에서 주어진 요소보다 크거나 같은 최소 요소를 반환하거나 그러한 요소가 없는 경우 null을 반환합니다. |
| 내림차순반복자() | 이 집합의 요소에 대한 반복자를 내림차순으로 반환합니다. |
| 내림차순 집합() | 이 세트에 포함된 요소의 역순 보기를 반환합니다. |
| 바닥(E e) | 이 집합에서 주어진 요소보다 작거나 같은 가장 큰 요소를 반환하거나 그러한 요소가 없는 경우 null을 반환합니다. |
| headSet(E toElement) | 요소가 toElement보다 엄격하게 작은 이 세트의 일부에 대한 뷰를 반환합니다. |
| headSet(E toElement 부울 포함) | 요소가 toElement보다 작은(또는 포함이 true인 경우와 같음) 이 집합의 일부에 대한 뷰를 반환합니다. |
| 더 높음(E e) | 주어진 요소보다 엄격하게 큰 이 집합의 최소 요소를 반환하거나 그러한 요소가 없는 경우 null을 반환합니다. |
| 반복자() | 이 집합의 요소에 대한 반복자를 오름차순으로 반환합니다. |
| 낮은(E e) | 이 집합에서 주어진 요소보다 엄격하게 작은 가장 큰 요소를 반환하거나 그러한 요소가 없는 경우 null을 반환합니다. |
| 폴퍼스트() | 첫 번째(가장 낮은) 요소를 검색하고 제거하거나 이 세트가 비어 있으면 null을 반환합니다. |
| 폴마지막() | 마지막(가장 높은) 요소를 검색하고 제거하거나 이 세트가 비어 있으면 null을 반환합니다. |
subSet(E fromElement 부울 fromInclusive E toElement 부울 toInclusive) | 요소 범위가 fromElement에서 toElement까지인 이 세트의 일부에 대한 뷰를 반환합니다. |
| subSet(E에서 요소 E로 요소까지) | 요소가 fromElement 포함에서 toElement 제외까지의 범위에 있는 이 집합의 일부에 대한 뷰를 반환합니다. |
| tailSet(E fromElement) | 요소가 fromElement보다 크거나 같은 이 집합의 일부에 대한 뷰를 반환합니다. |
| tailSet(E fromElement 부울 포함) | 요소가 fromElement보다 큰(또는 포함이 true인 경우와 같음) 이 집합의 일부에 대한 뷰를 반환합니다. |
인터페이스 java.util.SortedSet에서 상속된 메서드
방법 | 설명 |
|---|---|
| 비교기() | 이 메소드는 이 집합의 요소 순서를 지정하는 데 사용되는 비교기를 반환하거나, 이 집합이 해당 요소의 자연 순서를 사용하는 경우 null을 반환합니다. |
| 첫 번째() | 이 메소드는 이 세트에 있는 첫 번째(최하위) 요소를 반환합니다. |
| 마지막() | 이 메소드는 세트에 있는 마지막(가장 높은) 요소를 반환합니다. |
| 분할기() | 이 정렬된 집합의 요소에 대해 Spliterator를 만듭니다. |
인터페이스 java.util.Set에서 상속된 메서드
방법 마우스 스크롤이 작동하지 않습니다 | 설명 |
|---|---|
| 추가(요소) | 이 방법은 세트에 특정 요소를 추가하는 데 사용됩니다. 이 함수는 지정된 요소가 집합에 이미 존재하지 않는 경우에만 요소를 추가합니다. 그렇지 않으면 해당 요소가 집합에 이미 존재하는 경우 함수는 False를 반환합니다. |
| addAll(컬렉션) | 이 메소드는 언급된 컬렉션의 모든 요소를 기존 세트에 추가하는 데 사용됩니다. 요소는 특정 순서를 따르지 않고 무작위로 추가됩니다. |
| 분명한() | 이 방법은 세트에서 모든 요소를 제거하는 데 사용되지만 세트를 삭제하지는 않습니다. 세트에 대한 참조가 여전히 존재합니다. |
| 포함(요소) | 이 메소드는 Set에 특정 요소가 존재하는지 여부를 확인하는 데 사용됩니다. |
| 모두 포함(컬렉션) | 이 메소드는 세트가 주어진 컬렉션에 존재하는 모든 요소를 포함하는지 여부를 확인하는 데 사용됩니다. 이 메서드는 집합에 모든 요소가 포함되어 있으면 true를 반환하고 요소 중 하나라도 누락되면 false를 반환합니다. |
| 같음() | 지정된 개체가 이 집합과 동일한지 비교합니다. |
| 해시코드() | 이 메소드는 Set의 이 인스턴스에 대한 hashCode 값을 가져오는 데 사용됩니다. Set의 이 인스턴스에 대한 hashCode 값인 정수 값을 반환합니다. |
| 비어있음() | 이 메소드는 NavigableSet이 비어 있는지 여부를 확인하는 데 사용됩니다. |
| 제거(요소) | 이 메소드는 세트에서 지정된 요소를 제거하는 데 사용됩니다. 이 메서드는 지정된 요소가 Set에 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다. |
| 모두 제거(컬렉션) | 이 메소드는 세트에 존재하는 컬렉션의 모든 요소를 제거하는 데 사용됩니다. 이 메서드는 호출의 결과로 이 집합이 변경된 경우 true를 반환합니다. |
| keepAll(컬렉션) | 이 방법은 주어진 컬렉션에 언급된 세트의 모든 요소를 유지하는 데 사용됩니다. 이 메서드는 호출의 결과로 이 집합이 변경된 경우 true를 반환합니다. |
| 크기() | 이 방법은 세트의 크기를 얻는 데 사용됩니다. 이는 요소 수를 나타내는 정수 값을 반환합니다. |
| toArray() | 이 메소드는 Set의 요소와 동일한 요소의 배열을 형성하는 데 사용됩니다. |
| toArray(T[] a) | 이 세트의 모든 요소를 포함하는 배열을 반환합니다. 반환된 배열의 런타임 유형은 지정된 배열의 런타임 유형입니다. |
인터페이스 java.util.Collection에 선언된 메소드
| 방법 | 설명 |
|---|---|
| 병렬스트림() | 이 컬렉션을 소스로 사용하여 병렬 스트림을 반환합니다. |
| RemoveIf(술어 super E>필터) | 주어진 조건을 만족하는 이 컬렉션의 모든 요소를 제거합니다. |
| 개울() | 이 컬렉션을 소스로 사용하여 순차 스트림을 반환합니다. |
| toArray?(Int함수 | 반환된 배열을 할당하기 위해 제공된 생성기 함수를 사용하여 이 컬렉션의 모든 요소를 포함하는 배열을 반환합니다. |
인터페이스 java.lang.Iterable에 선언된 메소드
| 방법 | 설명 |
|---|---|
| forEach(소비자 super T>행동) | 모든 요소가 처리되거나 작업에서 예외가 발생할 때까지 Iterable의 각 요소에 대해 지정된 작업을 수행합니다. |