treeset java tutorial with programming examples
Bu Öğretici, TreeSet Sınıfı, Uygulama, Yineleme, TreeSet Vs HashSet, Java TreeSet Örnekleri vb. Hakkında her şeyi açıklar:
Java'daki TreeSet, Set arayüzünü (daha spesifik olarak SortedSet) uygular. TreeSet, verileri depolamak için dahili olarak bir TreeMap kullanır. Varsayılan olarak, TreeSet'in nesneleri veya öğeleri doğal sıralamaya göre artan sırada saklanır.
Java'da TreeSet'i uygulayan TreeSet sınıfı, 'NavigableSet' arayüzünü uygular ve ayrıca AbstractSet sınıfını miras alır.
=> Java Eğitim Öğreticilerinin A-Z'sini Burada Görmek İçin Burayı Kontrol Edin.
Ne öğreneceksin:
Java'da TreeSet
TreeSet öğelerinin, belirli bir yapıcı prototipi kullanılarak bir TreeSet nesnesi oluşturulurken özelleştirilmiş Karşılaştırıcı sağlanarak da açıkça sipariş edilebileceğini unutmayın.
Aşağıda, TreeSet'in bazı önemli özellikleri verilmiştir:
- TreeSet sınıfı, SortedSet arabirimini uygular. Yinelenen öğelere izin vermez.
- TreeSet sınıfı senkronize edilmedi.
- TreeSet, ekleme sırasını korumaz, ancak TreeSet'teki öğeler doğal sıralamaya göre sıralanır.
- TreeSet, bir TreeSet nesnesi oluştururken özel bir karşılaştırıcı kullanılarak sıralanabilir.
- TreeSet normalde doğal olarak sıralanan büyük miktarda bilgiyi depolamak için kullanılır. Bu, kolay ve daha hızlı erişime yardımcı olur.
TreeSet Sınıf Bildirimi
Java, TreeSet veri yapısının işlevselliğini içeren 'TreeSet' adlı bir sınıf sağlar. TreeSet sınıfı, java.util paketinin bir parçasıdır.
TreeSet sınıfını Java programına dahil etmek için, aşağıda verilen import ifadesini kullanmalıyız:
import java.util.TreeSet;
veya
import java.util.*;
TreeSet sınıfının genel bir bildirimi şöyledir:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
Sınıf bildiriminden görüldüğü gibi, TreeSet sınıfı AbstractSet'i genişletir ve NavigableSet, Cloneable ve Serializable arabirimlerini uygular.
TreeSet sınıfı için bir sınıf hiyerarşisi aşağıda verilmiştir:
Dahili Uygulama
TreeSet'in NavigableSet arabirimini uyguladığını ve SortedSet sınıfını genişlettiğini biliyoruz.
Dahili olarak, TreeSet yapıcısı şu şekilde tanımlanır:
public TreeSet() { this(new TreeMap()); }
TreeSet'in yukarıdaki yapıcı tanımında görüldüğü gibi, bir TreeMap nesnesi çağrılır. Böylece dahili olarak, bir TreeSet için uygulanan bir TreeMap nesnesidir. Bu nedenle, TreeSet'e bir öğe eklerken, TreeMap'e, anahtarların varsayılan olarak sıralandığı bir anahtar eklenir.
Göre TreeSet'te Oracle belgeleri ,
'Bir TreeSet, TreeMap'e dayalı bir NavigableSet uygulamasıdır.'
Java TreeSet Örneği
Aşağıdaki Java programı, TreeSet'i gösteren basit bir örnek göstermektedir. Bu programda basit bir Renk Ağacı Seti tanımladık. Ona elemanlar ekliyoruz ve sonra görüntülüyoruz. Öğelerin doğal sıralamaya göre görüntülendiğine dikkat edin.
import java.util.*; class Main{ public static void main(String args()){ //Create and add elements to TreeSet TreeSet color_TreeSet=new TreeSet(); color_TreeSet.add('Red'); color_TreeSet.add('Green'); color_TreeSet.add('Blue'); color_TreeSet.add('Yellow'); //Traverse the TreeSet and print elements one by one System.out.println('TreeSet Contents:'); Iterator iter=color_TreeSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Çıktı:
TreeSet İçeriği:
Mavi Yeşil Kırmızı Sarı
TreeSet ile Yinele
TreeSet'in bireysel öğelerine erişmek için, TreeSet'te yinelememiz veya başka bir deyişle, TreeSet'ten geçmemiz gerekir.
Bunu, TreeSet için bir Yineleyici bildirerek yapıyoruz ve ardından her öğeye erişmek için bu Yineleyiciyi kullanıyoruz. Bunun için, TreeSet'teki bir sonraki öğeyi döndüren bir yineleyicinin next () yöntemini kullanıyoruz.
Aşağıdaki Java programı, TreeSet aracılığıyla yineleme yapmak için Yineleyicinin kullanımını göstermektedir.
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String() args) { //create and initialize TreeSet TreeSet num_Treeset = new TreeSet(); num_Treeset.add(20); num_Treeset.add(5); num_Treeset.add(15); num_Treeset.add(25); num_Treeset.add(10); System.out.println('TreeSet: ' + num_Treeset); // Call iterator() method to define Iterator for TreeSet Iterator iter_set = num_Treeset.iterator(); System.out.print('TreeSet using Iterator: '); // Access TreeSet elements using Iterator while(iter_set.hasNext()) { System.out.print(iter_set.next()); System.out.print(', '); } } }
Çıktı:
Ağaç Kümesi: (5, 10, 15, 20, 25)
Yineleyici kullanarak TreeSet: 5, 10, 15, 20, 25,
sdlc'nin aşamaları nelerdir
Java'da TreeSet Karşılaştırıcı
Varsayılan olarak, TreeSet doğal olarak sıralanır. Yeni bir karşılaştırıcı sınıf tanımlayarak TreeSet'i özelleştirilmiş bir sırayla da sıralayabiliriz. Bu karşılaştırıcı sınıfta, TreeSet'in öğelerini sıralamak için 'karşılaştırma' yöntemini geçersiz kılmamız gerekir. Bu karşılaştırıcı nesne daha sonra TreeSet yapıcısına iletilir.
Aşağıdaki Java programı, Ağaç Setini sıralamak için bir Karşılaştırıcının kullanımını göstermektedir.
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String() args) { // Create a TreeSet with user-defined comparator TreeSet cities = new TreeSet(new cities_Comparator()); //add elements to the comparator cities.add('Pune'); cities.add('Hyderabad'); cities.add('Indore'); cities.add('Bangaluru'); //print the contents of TreeSet System.out.println('TreeSet: ' + cities); } // Create a comparator class public static class cities_Comparator implements Comparator { //override compare method to compare two elements of the TreeSet @Override public int compare(String cities_one, String cities_two) { int value = cities_one.compareTo(cities_two); // sort elements in reverse order if (value > 0) { return -1; } else if (value <0) { return 1; } else { return 0; } } } }
Çıktı:
TreeSet: (Pune, Indore, Haydarabad, Bangaluru)
Yukarıdaki program, verilen TreeSet'i alfabetik olarak ters sırada sıralamak için bir Karşılaştırıcı sınıfı uygular.
Önerilen Okuma = >> Java Karşılaştırıcı Arayüzü
TreeSet API / Yöntemler ve Oluşturucular
Bu bölümde, TreeSet sınıfının API'sini tartışacağız. Burada TreeSet sınıfı tarafından sağlanan yapıcıları ve yöntemleri tartışacağız.
TreeSet sınıfı, bir TreeSet nesnesi oluşturmak için aşırı yüklenmiş yapıcılar sağlar.
Bu kurucuları aşağıdaki gibi tablo haline getirdik:
İnşaatçılar
Yapıcı Prototip | Açıklama | |
---|---|---|
içerir | boolean içerir (Object o) | TreeSet'in verilen öğeyi içerip içermediğini denetler; varsa doğru. |
Ağaç Kümesi () | Yeni, boş bir TreeSet nesnesi oluşturmak için varsayılan yapıcı. | |
TreeSet (Koleksiyon c) | Doğal sıralamaya göre sıralanmış, c koleksiyonundaki öğeleri içeren yeni bir TreeSet nesnesi oluşturur. | |
Ağaç Kümesi (Karşılaştırıcı karşılaştırıcı) | Boş olan ve belirtilen karşılaştırıcıya göre sıralanacak yeni bir TreeSet nesnesi oluşturur. | |
TreeSet (SortedSet'ler) | Verilen sıralanmışSet'lerdeki öğeleri içeren yeni bir TreeSet nesnesi oluşturur. |
Yöntemler
Daha sonra, TreeSet sınıfı tarafından sağlanan çeşitli yöntemleri tablo haline getirelim.
Yöntem | Yöntem Prototipi | Açıklama |
---|---|---|
Ekle | boole toplamı (E e) | Zaten orada değilse, belirtilen öğeyi TreeSet'e ekler. |
hepsini ekle | boole addAll (Koleksiyon c) | Verilen c koleksiyonundaki tüm öğeleri kümeye ekler. |
tavan | E tavan (E e) | E'den büyük veya e eşit olan öğeyi döndürür (en küçük öğe); veya hiç öğe yoksa null. |
açık | void temizle () | TreeSet'teki tüm öğeleri siler. |
klon | Nesne klonu () | TreeSet nesnesinin basit bir kopyasını döndürür. |
karşılaştırıcı | Karşılaştırıcı karşılaştırıcı () | Doğal sıralama kullanılıyorsa, TreeSet için karşılaştırıcıyı veya null döndürür. |
descendingIterator | Yineleyici azalanIterator () | Ağaç Kümesindeki öğeler üzerinde azalan yineleyici döndürür. |
descendingSet | NavigableSet descendingSet () | Ağaç Kümesindeki öğelerin görünümünü ters sırada döndürür. |
ilk | Önce E () | TreeSet'teki ilk veya en düşük öğeyi döndürür. |
zemin | E katı (E e) | TreeSet'te verilen e öğesinden küçük veya ona eşit olan öğeyi döndürür. Böyle bir öğe yoksa null döndürür. |
headSet | SortedSet HeadSet (E toElement) | Verilen toElement öğesinden kesinlikle daha az olan bir dizi öğeyi döndürür |
NavigableSet headSet (E toElement, boole dahil) | ToElement'e eşit (kapsayıcı = true ise) veya daha küçük olan bir öğe kümesi döndürür. | |
daha yüksek | E daha yüksek (E e) | Bu kümedeki en küçük öğeyi, verilen öğeden kesinlikle daha büyük veya böyle bir öğe yoksa null döndürür. |
boş | boolean isEmpty () | TreeSet'in boş olup olmadığını kontrol eder. Boşsa doğru döndürür. |
yineleyici | Yineleyici yineleyici () | TreeSet için bir yineleyici (artan sırada) döndürür. |
son | E son () | TreeSet'teki en yüksek veya son öğeyi döndürür. |
aşağı | E daha düşük (E e) | TreeSet'te verilen e öğesinden kesinlikle daha küçük olan öğeyi (en büyük öğe) döndürür. |
anket | E anket İlk () | Kümedeki ilk (en düşük) öğeyi kaldırır ve döndürür; küme boşsa null. |
anket | E anketSon () | Kümedeki son (en büyük) öğeyi kaldırır ve döndürür; boş ayarlanırsa null. |
Kaldır | boole kaldır (Object o) | Verilen öğeyi kümeden kaldırır. |
boyut | int size () | Ağaç Kümesinde bulunan öğelerin boyutunu veya sayısını döndürür. |
subSet | NavigableSet altkümesi (E'den E, Kapsayıcı'dan boole, E'den Eleman'a, Boole'den Kapsayıcı'ya) | Element'tenElement'e kadar değişen öğelerin bir görünümünü döndürür. |
SortedSet alt Kümesi (E'den Elemana, E'den Elemana) | Element (dahil) ile Element (hariç) arasında değişen bir görünüm öğeleri döndürür. | |
tailSet | SortedSet tailSet (Öğeden E) | FromElement öğesinden büyük veya ona eşit öğeler içeren bir görünüm döndürür. |
NavigableSet tailSet (Öğeden E, mantıksal dahil) | Öğelerin eşittir (kapsayıcı doğruysa) veya fromElement öğesinden daha büyük bir görünümünü döndürür. |
TreeSet In Java 8
Lütfen TreeSet için Java 8 sürümünde önemli bir değişiklik olmadığını unutmayın. Tüm yöntemler ve yapıcılar Java 8 ve sonraki sürümlerde çalışır.
Java'da TreeSet Uygulaması
Aşağıdaki Java programı, yukarıda tartışılan TreeSet yöntemlerinin çoğunu uygular.
import java.util.Iterator; import java.util.TreeSet; import java.util.ArrayList; public class Main { public static void main(String() args) { //create a TreeSet of numbers TreeSet numSet = new TreeSet(); //add () method numSet.add(30); numSet.add(10); //declare and initialize an ArrayList ArrayList myList = new ArrayList(); myList.add(15); myList.add(25); myList.add(35); //addAll () method : add ArrayList elements to TreeSet numSet.addAll(myList); //define an iterator on TreeSet Iterator iterator = numSet.iterator(); System.out.print('Tree set contents: '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //ceiling () System.out.println('ceiling(25):' + numSet.ceiling(25)); //floor () System.out.println('floor(25):' + numSet.floor(25)); //contains () System.out.println('TreeSet contains(15):' + numSet.contains(15)); // isEmpty () if (numSet.isEmpty()) System.out.print('Tree Set is empty.'); else System.out.println('Tree Set size: ' + numSet.size()); // first () System.out.println('TreeSet First element: ' + numSet.first()); // last () System.out.println('TreeSet Last element: ' + numSet.last()); // remove () if (numSet.remove(30)) System.out.println('Element 30 removed from TreeSet'); else System.out.println('Element 30 doesn't exist!'); System.out.print('TreeSet after remove (): '); iterator = numSet.iterator(); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //size () System.out.println('TreeSet size after remove (): ' + numSet.size()); //Headset () System.out.println('Headset : ' + numSet.headSet(35)); // clear () numSet.clear(); System.out.println('Tree Set size after clear (): ' + numSet.size()); } }
Çıktı:
Ağaç seti içeriği: 10 15 25 30 35
tavan (25): 25
Kat (25): 25
TreeSet şunu içerir (15): true
Ağaç Seti boyutu: 5
TreeSet İlk öğe: 10
TreeSet Son eleman: 35
Öğe 30 TreeSet'ten kaldırıldı
Kaldırıldıktan sonra TreeSet (): 10 15 25 35
Kaldırıldıktan sonra TreeSet boyutu (): 4
Kulaklık: (10, 15, 25)
Ağaç Temizledikten sonra boyutu ayarla (): 0
Yukarıdaki programda, bir TreeSet nesnesi tanımlıyoruz ve ardından 'add' yöntemini kullanarak ona elemanlar ekliyoruz. Ardından, bir ArrayList tanımlıyoruz. Ardından 'addAll' yöntemini kullanarak ArrayList öğelerini TreeSet'e ekleriz. Daha sonra, Yineleyici, tavan, zemin, ilk, son, içerir, boyut, isEmpty gibi çeşitli TreeSet yöntemlerini gösteriyoruz.
TreeSet ve HashSet
TreeSet ve HashSet arasındaki bazı farklara bir göz atalım.
Ağaç Kümesi | HashSet |
---|---|
Öğeler doğal sıraya göre sıralanır. | Öğeler sıralanmamış. |
Ekleme, silme ve arama gibi işlemler için O (log N) süresi alır, böylece TreeSet'ten daha yavaş hale getirir. | Ekleme, silme ve arama gibi temel işlemler için sabit zaman alır ve bu işlemi TreeSet'ten daha hızlı hale getirir. |
Boş nesnelere izin vermez. | Boş nesneye izin verir. |
İki nesneyi karşılaştırmak için CompareTo () yöntemini kullanır. | İki nesneyi karşılaştırmak için Compare () ve equals () yöntemini kullanır. |
Navigable TreeMap kullanılarak dahili olarak uygulanmıştır. | HashMap kullanılarak dahili olarak uygulanmıştır. |
Çeşitli manipülasyonlar gerçekleştirebilen zengin işlevsellik API'sine sahiptir. | HashSet'in işlevsellik API'si oldukça sınırlıdır. |
Sıkça Sorulan Sorular
S # 1) TreeSet nedir?
Cevap: TreeSet, yinelenen değerlere izin vermeyen bir SortedSet uygulamasıdır. Ağaç Kümesindeki öğeler varsayılan olarak artan düzende sıralanır.
S # 2) Java'da TreeSet'e nasıl eleman eklersiniz?
Cevap: TreeSet sınıfı, TreeSet'e belirli bir öğe eklemek için kullanılan bir ekleme yöntemi sağlar. Ayrıca 'addAll' yöntemini de sağlar. Bu yöntem, başka bir koleksiyonu bağımsız değişken olarak kabul eder ve ardından bu koleksiyonun tüm öğelerini TreeSet'e ekler.
S # 3) TreeSet iş parçacığı için güvenli midir?
Cevap: Hayır. TreeSet iş parçacığı açısından güvenli değildir. Bu nedenle, çok iş parçacıklı bir ortamda TreeSet'i nasıl çalıştırdığımıza dikkat etmeliyiz.
S # 4) TreeSet'in kopyaları olabilir mi?
Cevap: Hayır. TreeSet, kopyalara izin vermez.
S # 5)TreeSet, Java'da boş değerlere izin veriyor mu?
Cevap: Evet. TreeSet'te boş elemanlara sahip olabiliriz.
Sonuç
Bu, TreeSet ile ilgili eğitimimizi tamamlar. TreeSet, yinelemelere izin vermeyen ancak boş değerlere izin veren bir SortedSet uygulamasıdır. Ağaç Kümesindeki öğeler varsayılan olarak artan düzende doğal sıralamaya göre sıralanır.
TreeSet sınıfının temellerini, bildirimi ve çeşitli yapıcıları ve yöntemleriyle birlikte gördük.
Sonraki eğitimlerimizde, kalan Java koleksiyonu sınıflarını tartışıyoruz.
=> Basit Java Eğitim Serisine Buradan Dikkat Edin.
Önerilen Kaynaklar
- Java'da İkili Arama Ağacı - Uygulama ve Kod Örnekleri
- TreeMap In Java - Java TreeMap Örnekleriyle Öğretici
- Java Vektör Nedir | Örneklerle Java Vektör Sınıfı Eğitimi
- Örneklerle Java Tarayıcı Sınıfı Eğitimi
- Java Dizi Sınıfı Eğitimi - Örneklerle java.util.Arrays Sınıfı
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir
- Java'da Jagged Array - Örneklerle Eğitim