Java'da NavigableSet

Java'da NavigableSet

Java'da GezinilebilirSet bir alt türüdür Sıralanmış Küme arayüz. Belirli bir öğenin azalan sıra yinelemesi ve diğerleri için en yakın eşleşmeleri elde etmek gibi çeşitli işlemleri gerçekleştirmemize olanak tanır. Kümedeki öğeler arasında gezinmek için yöntemler sağlar.

Örneğin NavigableSet arayüzü, yalnızca artan sırayı destekleyen SortedSet'in aksine, sette hem artan hem de azalan sırada gezinmemize olanak tanır. NavigableSet arayüzünü uygulayan sınıflar şunlardır: AğaçSet  Ve  ConcurrentSkipListSet

  • NavigableSet, SortedSet'i genişletir ve böylece First() Last() HeadSet() TailSet() vb. gibi yöntemler sağlar.
  • Her iki yönde artan ve azalan sırada gezinmenizi sağlar
  • NavigableSet'in en yaygın uygulaması TreeSet'tir.

Örnek: Bu örnek, TreeSet kullanarak bir NavigableSet oluşturmayı ve bu sete, bunları otomatik olarak artan düzende sıralayan öğeler eklemeyi gösterir.

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

Çıkış
Navigable Set: [10 20 30 40 50]  


Aşağıdaki diyagram, Java'nın kümelerle ilgili koleksiyon çerçevesindeki kalıtım yapısını göstermektedir.

Örneklerle GezinilebilirJava Seti

TreeSet uygulayan bir sınıftır GezinilebilirSet bu da SortedSet'i genişletir, bu da genişletir Ayarlamak .

NavigableSet Bildirgesi

Java'da NavigableSet'in bildirimi şu şekilde bildirilebilir:

GezinilebilirSet setAdı;

Not: ' Type', kümedeki öğenin türüdür (örneğin, tamsayı String vb.) ve setName, değişkenin adıdır.

NavigableSet Nesneleri Oluşturma

Bir arayüz olduğu için doğrudan NavigableSet oluşturamıyoruz. Bunun yerine şöyle bir sınıf kullanıyoruz AğaçSet bunu uygulayan. Jeneriklerin yardımıyla setin depolayacağı nesnelerin türünü tanımlayabiliriz. Bu tür açısından güvenli küme şu şekilde tanımlanabilir:

GezinilebilirSet küme = yeni Ağaç Kümesi ();

Örnek: Bu örnek, sıralanmış bir kümeyi hem normal hem de ters sırada değiştirmek ve gezinmek için descedingSet() tailSet() Lower() pollFirst() ve pollLast() gibi çeşitli NavigableSet yöntemlerinin nasıl kullanılacağını gösterir.

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

Çıkış:

Çıkış

NavigableSet Üzerinde Çeşitli İşlemlerin Gerçekleştirilmesi

1. Öğe Ekleme: Şunu kullanabiliriz: eklemek() NavigableSet'e öğe ekleme yöntemi. Öğeler sıralanmış düzende saklanır, kopyalara izin verilmez ve boş değerler de NavigableSet tarafından kabul edilmez.

Örnek: Bu örnek, kopyaların göz ardı edildiği ve öğelerin artan düzende sıralandığı add() kullanılarak bir NavigableSet'e öğe eklemeyi gösterir.

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

Çıkış
NavigableSet: [A B C]  


2. Öğelere Erişim: Öğeleri ekledikten sonra öğelere erişmek istiyorsak aşağıdaki gibi yerleşik yöntemleri kullanabiliriz: içerir() Birinci() son() vesaire.

Örnek: Bu örnek, bir NavigableSet'e öğe eklemeyi, bir öğenin varlığını kontrol etmeyi ve ilk ve son öğeleri almayı gösterir.

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

Çıkış
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C  


3. Elemanların Kaldırılması: Değerler NavigableSet'ten aşağıdakiler kullanılarak kaldırılabilir: kaldırmak() anketFirst() anketSon() .

Örnek: Bu örnek, NavigableSet'ten öğelerin kaldırılmasını gösterir.

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

Çıkış
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. Yinelenen Öğeler: NavigableSet'te yineleme yapmanın çeşitli yolları vardır. En ünlüsü şunu kullanmaktır:  döngü için geliştirildi.

Örnek: Bu örnek, bir NavigableSet'e öğe eklemeyi ve artan sırada yinelemeyi gösterir.

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     +     ' '  );      }   }   

Çıkış
A B C D E Z  

Yöntemler

NavigableSet arayüzünde mevcut olan yöntemler aşağıdadır. 

Yöntemler

Tanım

 tavan(E e) Bu kümedeki, verilen öğeye eşit veya ondan büyük olan en küçük öğeyi veya böyle bir öğe yoksa null değerini döndürür.
azalanIterator() Bu kümedeki öğeler üzerinde azalan sırada bir yineleyici döndürür.
azalanSet() Bu kümede bulunan öğelerin ters sıralı görünümünü döndürür.
kat(E e) Bu kümedeki en büyük öğeyi, verilen öğeden küçük veya ona eşit veya böyle bir öğe yoksa null değerini döndürür.
HeadSet(E'den Element'e) Bu kümenin, öğeleri toElement'ten kesinlikle küçük olan kısmının görünümünü döndürür.
headSet(E toElement boolean dahil) Bu kümenin, öğeleri öğesinden küçük (veya kapsayıcı doğruysa eşit) olan kısmının görünümünü döndürür.
daha yüksek(E e) Bu kümedeki, verilen öğeden kesinlikle büyük olan en küçük öğeyi döndürür veya böyle bir öğe yoksa null değerini döndürür.
yineleyici() Bu kümedeki öğeler üzerinde artan sırada bir yineleyici döndürür.
alt(E e) Bu kümedeki en büyük öğeyi, verilen öğeden kesinlikle daha küçük veya böyle bir öğe yoksa null değerini döndürür.
anketFirst() İlk (en düşük) öğeyi alır ve kaldırır veya bu küme boşsa null değerini döndürür.
anketSon() Son (en yüksek) öğeyi alır ve kaldırır veya bu küme boşsa null değerini döndürür.

subSet(E fromElement boolean)

Inclusive E'den Element boolean'a ve Inclusive'e)

Öğeleri fromElement ile toElement arasında değişen bu kümenin kısmının görünümünü döndürür.
subSet(E Eleman E'den Eleman'a) Öğeleri, Öğe dahil ile Öğe hariç arasında değişen bu kümenin bölümünün görünümünü döndürür.
tailSet(Element'ten E) Bu kümenin, öğeleri fromElement'ten büyük veya ona eşit olan kısmının görünümünü döndürür.
tailSet(E fromElement boolean dahil) Bu kümenin, Öğeleri öğesinden büyük (veya kapsayıcı doğruysa eşit) olan kısmının bir görünümünü döndürür.

                                                                                                                                              
Java.util.SortedSet Arayüzünden Devralınan Yöntemler

Yöntem

Tanım

karşılaştırıcı()  Bu yöntem, bu kümedeki öğeleri sıralamak için kullanılan karşılaştırıcıyı döndürür veya bu küme, öğelerinin doğal sıralamasını kullanıyorsa null değerini döndürür.
Birinci() Bu yöntem, bu kümede bulunan ilk (en düşük) öğeyi döndürür.
son() Bu yöntem, kümede bulunan son (en yüksek) öğeyi döndürür.
ayırıcı() Bu sıralanmış kümedeki öğeler üzerinde bir Ayırıcı oluşturur.

Java.util.Set Arayüzünden Devralınan Yöntemler

Yöntem

Tanım

ekle(öğe) Bu yöntem kümeye belirli bir öğe eklemek için kullanılır. İşlev, yalnızca belirtilen öğe kümede mevcut değilse öğeyi ekler, aksi halde öğe Kümede zaten mevcutsa işlev False değerini döndürür.
addAll(koleksiyon)  Bu yöntem, söz konusu koleksiyondaki tüm öğelerin mevcut kümeye eklenmesi için kullanılır. Öğeler herhangi bir özel sıraya uyulmadan rastgele eklenir.
temizlemek()   Bu yöntem kümedeki tüm elemanları kaldırmak için kullanılır ancak kümeyi silmek için kullanılmaz. Setin referansı hala mevcuttur.
içerir(öğe) Bu yöntem belirli bir öğenin Sette mevcut olup olmadığını kontrol etmek için kullanılır.
içerirHepsi(koleksiyon) 

Bu yöntem, kümenin verilen koleksiyonda bulunan tüm öğeleri içerip içermediğini kontrol etmek için kullanılır.

Bu yöntem, kümenin tüm öğeleri içermesi durumunda true değerini döndürür, öğelerden herhangi birinin eksik olması durumunda false değerini döndürür.

eşittir() Belirtilen nesneyi eşitlik için bu kümeyle karşılaştırır.
hashCode()  Bu yöntem, Set'in bu örneğinin hashCode değerini almak için kullanılır. Kümenin bu örneği için hashCode değeri olan bir tamsayı değeri döndürür.
isEmpty() Bu yöntem bir NavigableSet'in boş olup olmadığını kontrol etmek için kullanılır.
kaldır(öğe) Bu yöntem verilen elemanı kümeden çıkarmak için kullanılır. Bu yöntem, belirtilen öğe Set'te mevcutsa True'yu döndürür, aksi takdirde False'ı döndürür.
Tümünü kaldır(koleksiyon) Bu yöntem, kümede bulunan tüm öğeleri koleksiyondan çıkarmak için kullanılır. Bu yöntem, çağrı sonucunda bu küme değişirse true değerini döndürür.
keepAll(koleksiyon) Bu yöntem, verilen koleksiyonda adı geçen kümedeki tüm öğeleri korumak için kullanılır. Bu yöntem, çağrı sonucunda bu küme değişirse true değerini döndürür.
boyut() Bu yöntem kümenin boyutunu elde etmek için kullanılır. Bu, öğe sayısını belirten bir tamsayı değeri döndürür.
toArray() Bu yöntem, Küme ile aynı öğelerden oluşan bir dizi oluşturmak için kullanılır.
 toArray(T[] a) Bu kümedeki tüm öğeleri içeren bir dizi döndürür; döndürülen dizinin çalışma zamanı türü, belirtilen dizininkidir.

Java.util.Collection Arayüzünde Bildirilen Yöntemler

Yöntem Tanım
paralelAkış() Kaynağı bu koleksiyon olan, muhtemelen paralel bir Akış döndürür.
RemoveIf(Yüklem filtre) Bu koleksiyonun verilen yüklemi karşılayan tüm öğelerini kaldırır.
aktarım() Kaynağı bu koleksiyon olan sıralı bir Akış döndürür.
toArray?(IntFunction jeneratör) Döndürülen diziyi tahsis etmek için sağlanan oluşturucu işlevini kullanarak bu koleksiyondaki tüm öğeleri içeren bir dizi döndürür.

Java.lang.Iterable Arayüzünde Bildirilen Yöntemler

Yöntem Tanım
forEach(Tüketici aksiyon) Tüm öğeler işlenene veya eylem bir istisna atana kadar yinelenebilir öğenin her öğesi için verilen eylemi gerçekleştirir.


Test Oluştur