logo

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] 


C++ int를 문자열로 변환

아래 다이어그램은 세트와 관련된 Java 컬렉션 프레임워크의 상속 구조를 보여줍니다.

NavigableSet-in-Java-예제' title=

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());  } } 

산출:

산출' loading='lazy' title=

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(술어필터)주어진 조건을 만족하는 이 컬렉션의 모든 요소를 ​​제거합니다.
개울()이 컬렉션을 소스로 사용하여 순차 스트림을 반환합니다.
toArray?(Int함수발전기)반환된 배열을 할당하기 위해 제공된 생성기 함수를 사용하여 이 컬렉션의 모든 요소를 ​​포함하는 배열을 반환합니다.

인터페이스 java.lang.Iterable에 선언된 메소드

방법설명
forEach(소비자행동) 모든 요소가 처리되거나 작업에서 예외가 발생할 때까지 Iterable의 각 요소에 대해 지정된 작업을 수행합니다.