Java의 NavigableSet
자바에서는 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]
아래 다이어그램은 세트와 관련된 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에서 요소를 제거하는 방법을 보여줍니다.
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의 각 요소에 대해 지정된 작업을 수행합니다. |