Giriş
Şu satırı dahil ederiz.
Bu sınıfa Comparator verilemediği için TreeSet tercih edilebilir.
Örnek
Şöyle yaparız
Şöyle yaparız.
Bu sınıf altta HashMap Sınıfını kullanır. Metodun için şöyledir.
Metodun içi şöyle. Önce bir map oluşturulur. Daha sonra her şey map'e eklenir.
Listeyi ekleyerek çiftleri elememek için şöyle yaparız.
Ekleme başarılı ise true döner. Değer zaten varsa false döner.
Örnek
Şöyle yaparız.
Listeyi ekleyerek çiftleri elememek için şöyle yaparız.
over200 olanları geri kalandan silmek için şöyle yaparız.
İki set'in kesişimini verir.
Örnek
Şöyle yaparız.
Elimizde iki dizi olsun nums1 = [1, 2, 2, 1], nums2 = [2, 2],
Çıktı olarak kesişim olan [2] sonucunu alırız.
Şu satırı dahil ederiz.
import java.util.HashSet;
Set arayüzünden kalıttığı için şöyle yaparız.Set<Integer> set = new HashSet<>();
ComparatorBu sınıfa Comparator verilemediği için TreeSet tercih edilebilir.
Örnek
Şöyle yaparız
TreeSet<String> treeSet = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
HashSet<String> hashSet = new HashSet<>();
treeSet.addAll(List.of("A", "b"));
hashSet.addAll(List.of("A", "B"));
System.out.println(hashSet.equals(treeSet)); // false
System.out.println(treeSet.equals(hashSet)); // true
Açıklaması şöyle. TreeSet açısından HashSet'teki tüm elemanlar kendinde mevcut çünkü Comparator kullanıyor.The reason for this is that a TreeSet uses comparator to determine if an element is duplicate while HashSet uses equals.constructor - default
Şöyle yaparız.
HasSet<Integer> set = new HashSet<>();
constructor - capacity + loadfactorBu sınıf altta HashMap Sınıfını kullanır. Metodun için şöyledir.
public HashSet(int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
}
Şöyle yaparız.HashSet <
Integer> set = new HashSet<> (10,0.5);
constructor - CollectionMetodun içi şöyle. Önce bir map oluşturulur. Daha sonra her şey map'e eklenir.
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
ÖrnekListeyi ekleyerek çiftleri elememek için şöyle yaparız.
Set<String> set = new HashSet<>(list);
add metoduEkleme başarılı ise true döner. Değer zaten varsa false döner.
Örnek
Şöyle yaparız.
HashSet<Integer> set = ...;
int item = ...;
if (!set.add(item)) {
//Duplicate;
}
Daha kolay anlaşılır kod için şöyle yapmak gerekir.boolean added = set.add(entry);
if (added) {
//do some more stuff
}
Metodun içi şöyledir. PRESENT dummy bir değerdir.public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
addAll metoduListeyi ekleyerek çiftleri elememek için şöyle yaparız.
set.addAll(list);
removeAll metoduover200 olanları geri kalandan silmek için şöyle yaparız.
Set<Laptops> over2000 = ...;
Set<Laptops> rest = ...;
rest.removeAll(over2000);
retainAll metoduİki set'in kesişimini verir.
Örnek
Şöyle yaparız.
public Integer[] intersection(int[] nums1, int[] nums2) {
HashSet<Integer> set1 = new HashSet<>();
for(int i : nums1) {
set1.add(i);
}
HashSet<Integer> set2 = new HashSet<>();
for(int i : nums2) {
set2.add(i);
}
set1.retainAll(set2);
return set1.toArray(new Integer[set1.size()]);
}
ÖrnekElimizde iki dizi olsun nums1 = [1, 2, 2, 1], nums2 = [2, 2],
Çıktı olarak kesişim olan [2] sonucunu alırız.
Örnek
Şöyle yaparız.
Girdi olarak verilen array HashSet'in büyüklüğünden küçükse yeni bir array döner.
Örnek
Elimizde şöyle bir kod olsun.
HashSet'in Kendini İçermesi
Açıklaması şöyle.
Şöyle yaparız.
Set<String> set1 = new HashSet<String>(coll1);
Set<String> set2 = new HashSet<String>(coll2);
set1.retainAll(set2); //gives me an empty set
toArray metodu - T[]Girdi olarak verilen array HashSet'in büyüklüğünden küçükse yeni bir array döner.
Örnek
Elimizde şöyle bir kod olsun.
Set<Integer> x = new HashSet<>();
x.add(4);
Şöyle yaparız.Integer[] arr = x.toArray(new Integer[x.size()]);
DiğerHashSet'in Kendini İçermesi
Açıklaması şöyle.
"it is not permissible for a set to contain itself as an element"Açıklaması şöyle.
Şöyle yapmamak lazım.Some collection operations which perform recursive traversal of the collection may fail with an exception for self-referential instances where the collection directly or indirectly contains itself. This includes the clone(), equals(), hashCode() and toString() methods. Implementations may optionally handle the self-referential scenario, however most current implementations do not do so.
Set<Object> mySet = new HashSet<>();
mySet.add(mySet);
Şöyle de yapmamak lazım.Set<Object> setA = new HashSet<Object>();
Set<Object> setB = new HashSet<Object>();
setA.add(setB);
setB.add(setA);
Hiç yorum yok:
Yorum Gönder