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):

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.
contains()
, bunun için harika bir çalışma süresi sağlar: Kullanılan uygulamanın a mı HashSet
yoksa 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 Student
bu 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. HashSet
Bunun 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.
- Eğer öyleyse, onları kullanarak A öğrencileri grubuna ekleyin.
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
HemHashSet
Java'da hem TreeSet
de 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 HashSet
ve Java arasındaki temel fark TreeSet
, the TreeSet
sıralanırken the HashSet
sıralanmamasıdır. Bu nedenle, TreeSet
anahtar işlemler için O(log n) zaman karmaşıklığına sahipken, HashSet
O(1) veya sabit zaman karmaşıklığına sahiptir; TreeSet
her zaman düzeni sağlamalıdır . Daha önce bahsedilen tuş takımı işlemlerine ek olarak, hem HashSet
ve TreeSet
Java'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 aHashSet
of 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 aTreeSet
of 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 😊
GO TO FULL VERSION