Java의 NavigableSet

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 컬렉션 프레임워크의 상속 구조를 보여줍니다.

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

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

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


퀴즈 만들기