IdentityHashMap:key可以重复的Map集合
key允许重复,只要两个对象的地址不相等即可。
例:
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object obj) {
// 判断地址是否相等 ,返回true表示同一对象
if (this == obj) {
return true;
}
// 传递进来的不是本类的对象 ,返回false表示不是同一对象
if (!(obj instanceof Person)) {
return false;
}
// 进行向下转型
Person p = (Person) obj;
if (this.name.equals(p.name) &&this.age == p.age) {
return true ;
}else{
return false ;
}
}
public int hashCode(){
return this.name.hashCode() * this.age ;
}
public String toString() {
return "姓名:" + this.name + ";年龄:" + this.age;
}
}
Map<Person, String> map = new IdentityHashMap<Person, String>();
map.put(new Person("A", 30), "A1");
map.put(new Person("A", 30), "A2");
map.put(new Person("B", 31), "lisi");
Set<Map.Entry<Person, String>> allSet = map.entrySet();
Iterator<Map.Entry<Person, String>> iter = allSet.iterator();
while (iter.hasNext()) {
Map.Entry<Person, String> me = iter.next();
System.out.println(me.getKey()+ " --> " + me.getValue());
}