Giriş
Map arayüzünü gerçekleştirir. Açıklaması şöyle.
Aslında bu sınıf nadir kullanılır ve Map arayüzünü bazı yerlerde bozar. Açıklaması şöyle.
Şöyle yaparız.
Şöyle yaparız.
Key ve Value nesneleri belirtilen değerler ile aynı ise siler. Şöyle yaparız.
Set olarak kullanımı için şöyle yaparız. En son eklenmeye çalışılan p nesnesi eklenmez. Burada ayrıca Person nesnesinin hashCode() ve equals() metodlarını override etmesine gerek olmadığını da görürüz.
Map arayüzünü gerçekleştirir. Açıklaması şöyle.
Key nesneleri bulmak için "identity" kullanılır. k1.equals (k2) yerine reference equality yani k1 == k2 yöntemini kullanırThis class implements the Map interface with a hash table, using reference-equality in place of object-equality when comparing keys (and values). In other words, in an IdentityHashMap, two keys k1 and k2 are considered equal if and only if (k1==k2). (In normal Map implementations (like HashMap) two keys k1 and k2 are considered equal if and only if (k1==null ? k2==null : k1.equals(k2)).)
Aslında bu sınıf nadir kullanılır ve Map arayüzünü bazı yerlerde bozar. Açıklaması şöyle.
constructorThis class is not a general-purpose Map implementation! While this class implements the Map interface, it intentionally violates Map's general contract, which mandates the use of the equals method when comparing objects. This class is designed for use only in the rare cases wherein reference-equality semantics are required.
Şöyle yaparız.
IdentityHashMap map = new IdentityHashMap();
put metoudŞöyle yaparız.
map.put("A", new String("B"));
remove metoduKey ve Value nesneleri belirtilen değerler ile aynı ise siler. Şöyle yaparız.
map.remove("A", new String("B")
DiğerSet olarak kullanımı için şöyle yaparız. En son eklenmeye çalışılan p nesnesi eklenmez. Burada ayrıca Person nesnesinin hashCode() ve equals() metodlarını override etmesine gerek olmadığını da görürüz.
// get IdentytitySet wich wrap IdentityHashMap
Set<Person> set = Collections.newSetFromMap( new IdentityHashMap<>() )
//test
Person p = new Person("a",1);
Person p2 = new Person("a",1);
set.add(p);
set.add(p2);
p.setD(999999999);
set.add(p);//add Person with changed "d" to 999999999
System.out.println(set.toString());
Çıktı olarak şunu alırız.[
Person{
s=StringProperty [value: a],
d=DoubleProperty [value:9.99999999E8]
},
Person{
s=StringProperty [value: a],
d=DoubleProperty [value: 1.0]
}
]
Hiç yorum yok:
Yorum Gönder