CodeGym /Java Blogu /Rastgele /Arayüz Olarak Java Seti
John Squirrels
Seviye
San Francisco

Arayüz Olarak Java Seti

grupta yayınlandı
Bir küme, yalnızca benzersiz nesnelerin bir koleksiyonudur. Benzersiz, iki nesnenin aynı değere/değerlere sahip olamayacağı anlamına gelir. Setin uygulanmasına bağlı olarak, sıralanabilir veya sıralanmayabilir. Bir Soyut Veri Türü (ADT) olarak Java kümesinin birkaç temel işlemi vardır (burada T, örneğin int, String veya herhangi bir sınıf nesnesi gibi herhangi bir veri türünü temsil eder): Arayüz Olarak Java Seti - 1
  • boolean add(T item): Öğe kümeye başarıyla eklenirse true, öğe zaten kümedeyse false değerini döndürür.
  • boolean remove(T item): Öğe kümeden başarıyla kaldırıldıysa true, aksi takdirde false döndürür (öğe kümede değilse).
  • boolean contains(T item): öğe kümedeyse doğru, aksi halde yanlış döndürür.
  • boolean isEmpty(): Küme boşsa true, aksi takdirde false döndürür.
Java'daki kümeler oldukça açıklayıcı işlev imzalarına sahiptir (olması gerektiği gibi). Bir sete iki özdeş öğe eklerseniz, yalnızca ilk eklenen öğe sette olacaktır. Aynı öğeyi eklemeye yönelik sonraki tüm girişimler, öğe önce kaldırılmadıkça yok sayılır. En sık kullanılan küme işlemlerinden biri, bir öğenin belirli bir küme içinde olup olmadığını kontrol etmektir. İşlev contains(), bunun için harika bir çalışma süresi sağlar: Kullanılan uygulamanın a mı HashSetyoksa a mı olduğuna bağlı olarak O(1) veya O(log n) zaman karmaşıklığıTreeSet, sırasıyla. Peki bir set ne için kullanılabilir? Pekala, kimlikler, adlar veya diğer benzersiz tanımlayıcılar gibi birçok farklı nesneyi takip etmeniz ve böyle bir koleksiyonda bir öğe olup olmadığını sık sık kontrol etmeniz gerekiyorsa, bir set muhtemelen iyi bir seçimdir. Studentİşte bir kümenin örnek kullanım durumu: Belirli bir sınıftaki tüm öğrencileri temsil eden nesnelerin bir listesine sahip olduğunuzu hayal edin . Her birinin Studentbu sınıf için benzersiz bir adı (dize) ve derecesi (int) olabilir. Tüm A öğrencilerinin (sınıf >=90) bir listesine sık sık başvurmak istiyorsanız, bu listede döngü yapmak ve her öğrencinin notunu her seferinde kontrol etmek sıkıcı olacaktır. HashSetBunun yerine, sınıftaki tüm A öğrencilerini izleyen a of dizelerini şu şekilde kullanabilirsiniz :
  • Öğrencilerin notları her güncellendiğinde, Öğrencinin yeni notunun 90'dan büyük veya eşit olup olmadığını kolayca kontrol edebilirsiniz.
    • Eğer öyleyse, onları kullanarak A öğrencileri grubuna ekleyin.add()
      • Zaten bir A öğrencisiyse, bu işlem basitçe göz ardı edilir.
    • Değilse, onları kullanarak A öğrencileri kümesinden çıkarın.remove()
      • Bu noktada A öğrencisi değillerse, bu işlem basitçe göz ardı edilir.
Böyle bir sistemle, sınıfınızdaki tüm 'A' öğrencilerinin her zaman güncel bir grubuna sahip olursunuz. Johnny Appleseed'in sınıfınızda başarılı olup olmadığını kontrol etmek isterseniz, bunu contains(“Johnny Appleseed”)seti arayarak kolayca yapabilirsiniz. Tabii ki, bu bir setin kullanım durumunun sadece bir örneğidir ve A öğrencilerini takip etmeye yönelik bu özel problem başka şekillerde çözülebilir.

Uygulamalar: Java'da HashSet ve Java TreeSet Örnekleri

Hem HashSetJava'da hem TreeSetde Java'da java.utils package. Bunları şu şekilde içe aktarabilirsiniz:

// imports everything from Java's util package, including HashSet and TreeSet
import java.util.*;
veya

import java.util.HashSet; // imports only the Java HashSet
import java.util.TreeSet; // imports only the Java TreeSet
Java HashSetve Java arasındaki temel fark TreeSet, the TreeSetsıralanırken the HashSetsıralanmamasıdır. Bu nedenle, TreeSetanahtar işlemler için O(log n) zaman karmaşıklığına sahipken, HashSetO(1) veya sabit zaman karmaşıklığına sahiptir; TreeSether zaman düzeni sağlamalıdır . Daha önce bahsedilen tuş takımı işlemlerine ek olarak, hem HashSetve TreeSetJava'da birkaç yardımcı işlev daha vardır:
  • void clear(): tüm nesnelerin kümesini temizler.
  • int size(): kümedeki nesne sayısını döndürür.
  • Object clone(): kümenin yüzeysel bir kopyasını döndürür.
  • Iterator iterator(): ilk nesneden başlayarak kümeye bir yineleyici döndürür.
size()Bu işlevlerin kullanımlarını “A öğrencileri listesi” örneğinde bulabileceğinizi hayal edebilirsiniz: kaç 'A' öğrenciniz olduğunu görmek veya clear()dönem sonunda listeyi temizlemek istiyorsanız arayabilirsiniz . Ara sınav raporları gibi belirli bir zamanda A sınıfındaki öğrencilerin listesinin bir klonunu oluşturmak ve saklamak için kullanabilirsiniz clone()(bu şekilde klon orijinaliyle birlikte güncel kalmaz).

Java HashSet Örneği

İşte Java'da kullanılan a HashSetof s'nin kısa bir örneği:String

import java.util.HashSet;
class HashSetDemo {
    public static void main(String[] args)
    {
	  // create a HashSet of Strings
        HashSet<String> hs = new HashSet<String>();
  
        // Add elements using the add() method
        hs.add("Collin");
	  hs.add("Bob");
 	  hs.add("Abigail");
  
        // Duplicates will ignored; this statement is useless
        hs.add("Collin");
  
        
        System.out.println(hs);
	  System.out.println("Bob is in the set (T/F): " + hs.contains("Bob"));
  System.out.println("Max is in the set (T/F): " + hs.contains("Max"));


    }
}
Çıktı: --------

[Collin, Bob, Abigail]
Bob is in the set (T/F): true
Max is in the set (T/F): false

Java TreeSet örneği

Java set örneği, teoriyi anlamanıza yardımcı olabilir. İşte Java'da kullanılan a TreeSetof s'nin kısa örneği:String

import java.util.TreeSet;
class TreeSetDemo {
    public static void main(String[] args)
    {
	  // create a TreeSet of Strings
        TreeSet<String> ts = new TreeSet<String>();
  
        // Add elements using the add() method.
        ts.add("Collin");
	  ts.add("Bob");
 	  ts.add("Abigail");
  
        // Duplicates will ignored; this statement is useless
        ts.add("Collin");
  
        // printing the set prints the names in alphabetical order!
        System.out.println(ts); 
	  
	  System.out.println("Bob is in the set (T/F): " + ts.contains("Bob"));
  System.out.println("Max is in the set (T/F): " + ts.contains("Max"));
  System.out.println("Size of the set: " + ts.size());
 	  ts.clear();
	  System.out.println("Size of the set after clear(): " + ts.size());
        

    }
}
Çıktı: -------

[Abigail, Bob, Collin]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Size of the set: 3
Size of the set after clear(): 0
Bu kadar! Umarım bu yardımcı olmuştur 😊
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION