Bilmeniz gereken ilk şey, HashSet
a gibi davranmasıdır Set
, yani nesnenizi doğrudan eklediğiniz anlamına gelir HashSet
ve kopyaları içeremez. Sadece değerinizi doğrudan içine ekleyin HashSet
.
Ancak, HashMap
bir Map
türüdür. Bu, her giriş eklediğinizde bir anahtar / değer çifti eklediğiniz anlamına gelir.
İçinde HashMap
yinelenen değerleriniz olabilir, ancak yinelenen anahtarlar olamaz. Gelen HashMap
yeni girdinin eskisinin yerini alacaktır. En son giriş,HashMap
.
HashMap ve HashSet arasındaki Bağlantıyı Anlama:
Unutmayın, HashMap
yinelenen anahtarlar olamaz. Sahne arkasında HashSet
bir kullanır HashMap
.
A içine herhangi bir nesne eklemeye çalıştığınızda HashSet
, bu giriş aslında sahnenin arkasında kullanılanla HashMap
aynı HashMap
olan bir anahtar olarak saklanır HashSet
. Bu temelde yatan HashMap
bir anahtar / değer çiftine ihtiyaç duyduğundan, bizim için bir kukla değer üretilir.
Şimdi aynı nesneyi başka bir yinelenen nesne eklemeye çalıştığınızda HashSet
, yine HashMap
altında yatan bir anahtar olarak eklemeye çalışacaktır . Ancak, HashMap
kopyaları desteklemez. Bu nedenle,HashSet
yine de bu türden yalnızca bir değere sahip olunur. Bir yan not olarak, her yinelenen anahtar için, HashSet'e girişimiz için oluşturulan değer rastgele / kukla bir değer olduğundan, anahtar hiç değiştirilmez. anahtarın çıkarılması ve aynı anahtarın (kukla değer aynıdır) eklenmesi hiç mantıklı olmadığı için yok sayılır.
Özet:
HashMap
yinelemeye izin verir values
, ancak izin vermez keys
.
HashSet
kopyalar içeremez.
Bir nesnenin eklenmesi başarıyla tamamlandı olup olmadığını oynamak ya da olmamak kontrol edebilirsiniz boolean
Aradığınızda döndürülen değeri .add()
ve döndürür olmadığını görmek true
veya false
. İade ederse true
, bu yerleştirilmiştir.
HashMap
olmadığını görmek içinkey
zaten çağırmadan önce var olanput
desteğindemap
?