我需要从中获取值
Map<Object1, Object2>() objectMap= new HashMap<Object1, Object2>();
Object1 obj1 = new Object1();
Object2 obj2 = new Object2();
//Object1 class:
public class Object1{
private String name;
private String id;
private String number;
//along with getters and setters
}
//Object2 class:
public class Object2{
private String value1;
private String value2;
//along with getters and settersenter code here
}
objectMap.put(obj1, obj2);
Object1 obj3 = new Object1();
obj3
的值与obj1
相同,即所有字段,名称,值和数字与obj3
相同。
如果obj3
等于obj1
,我需要使用obj3
获取地图的值。如何检查obj1
等于obj3
然后如何使用obj3
获取地图值?
所以你这样开始
objectMap.put(obj1, obj2);
现在你的Map
你有一个键/值对。如果你然后打电话
objectMap.get(obj1);
你会得到obj2
回来。这是因为您用于查找的对象具有相同的hashCode
,并且与用于put
的对象“相等()”。
如果你那么这样做
objectMap.get(obj3);
你会得到obj2
回来。这也是因为您用于查找的对象具有相同的hashCode
,并且与用于put
的对象“相等()”。
所以。
如果你这样做:
Object1 o1 = null;
if (obj1.equals(obj3) {
o1 = objectMap.get(obj1);
}
只有在键相等的情况下,您才能从地图中检索所需的值。显然,if
语句是完全冗余的,它可以证明密钥相等的点,以便使其工作。显然你的班级Object1
需要equals
和hashcode
为此工作。
Map<K,V> map=new Hash Map<K,V>();
for(Map.Entry m = map.entry Set())
{
m.put(对象1); m.put(对象2);
}