从Java中获取Map中的值

问题描述 投票:0回答:2

我需要从中获取值

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获取地图值?

java hashmap
2个回答
0
投票

所以你这样开始

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需要equalshashcode为此工作。


-1
投票
Map<K,V> map=new Hash Map<K,V>();

for(Map.Entry m = map.entry Set())

{

m.put(对象1); m.put(对象2);

}
© www.soinside.com 2019 - 2024. All rights reserved.