Java'da Item
nesnesini karşılaştıran iki kümem var. Setleri karşılaştırmak için Item
'equals
yöntemi çağrılır ve sadece referansları karşılaştırmak için bir yöntem var mı? Her bir AbstractSet
Derin karşılaştırma Java'daki ayarlar
cevap
Bunu yapar. the docs
public boolean equals(Object o)
eşitlik bu set ile belirtilen nesneyi karşılaştırır bakın. Verilen nesne aynı zamanda bir set ise true döndürür, iki set aynı boyuta sahiptir ve verilen kümenin her üyesi bu sette bulunur. Bu, Eşit yönteminin Set arabiriminin farklı uygulamalarında düzgün şekilde çalışmasını sağlar. Bu uygulama, önce belirtilen nesnenin bu ayarlanmış olup olmadığını kontrol eder; eğer öyleyse, doğru döner. Ardından, belirtilen nesnenin boyutu, bu kümenin boyutuna eşit olan bir kümedir; değilse, yanlış döndürür. Eğer öyleyse, returnAll ((Koleksiyon) o) değerini döndürür.
Yani aslında bu (containsAll(..)
tarafından çağrılır) contains
uygulanmasına dayanır. HashSet
için (en azından), aradığınız şey budur.
Varsayılan davranış budur, görmüyorsanız ne yaparsanız o zaman hashCode'u da geçersiz kıldığınızı kontrol edin. Örnek için aşağıdaki kodu bakınız:
public static void main(String[] args) {
Set<Item> items1 = new HashSet<Item>();
items1.add(new Item("item 1"));
items1.add(new Item("item 2"));
Set<Item> items2 = new HashSet<Item>();
items2.add(new Item("item 1"));
items2.add(new Item("item 2"));
System.out.println(items1.equals(items2));
}
private static class Item {
private String id;
public Item(String id) {
this.id = id;
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
return id.equals(((Item)obj).id);
}
}
Bu çıkışlar:
gerçek
- 1. C++ zarif sözdizimi ile derin temsili karşılaştırma?
- 2. Normal ifadeyle javadaki URL nasıl doğrulanır?
- 3. Varsayılan ayarlar
- 4. django özgü ayarlar app
- 5. AngularJS'deki Genel Ayarlar
- 6. Junit Android Ayarlar
- 7. silverstripe 3 addFieldToTab "Ayarlar"
- 8. DataTrigger varsayılan değerini ayarlar
- 9. StyleCop ayarlar dosyası kaydedilemedi
- 10. Ayarlar etkinliğinden geri gitme
- 11. Ayarlar faaliyeti yukarı düğmesi
- 12. Hiyerarşik Veri Modelleri: Kompanzasyon ve Karşılıklı Ayarlar vs
- 13. Karşılaştırma UIImage
- 14. Karşılaştırma ActionBarSherlock
- 15. ilişki/karşılaştırma?
- 16. Karşılaştırma operatörleri
- 17. Nesneleri karşılaştırma
- 18. YCSB Karşılaştırma
- 19. NSDates'i Karşılaştırma
- 20. PHP derin klon nesnesi
- 21. kompleks (derin) devlet
- 22. Backand derin sorgulama
- 23. Doktrin kaydının derin kopyası
- 24. nodejs farklarla derin eşit
- 25. Hızlı derin NSObject'ler derlenmiyor
- 26. ayıran JPA varlıkları ince ayarlar
- 27. Java I18n desteklenmiyor Yerel Ayarlar
- 28. Ayarlar hakkında django-kereviz uyarıları.DEBUG
- 29. Git bağlantı kancaları - genel ayarlar
- 30. Evrensel iOS Uygulamasında Ayrı Ayarlar
teşekkürler @MrWiggles. Hashing'i geçersiz kılmak benim problemimi çözdü (hashCode ve equals öğelerinden birini geçersiz kılmadı). – user495285