从Java中获取Map中的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Java中获取Map中的值相关的知识,希望对你有一定的参考价值。

我需要从中获取值

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

另一答案
Map<K,V> map=new Hash Map<K,V>();

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

{

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

}

以上是关于从Java中获取Map中的值的主要内容,如果未能解决你的问题,请参考以下文章

java遍历request.getParameterMap()中的值

如何从该片段中的 onItemSelectedListener 中获取微调器单击的项目?

java获取map中值最小的

结果集存放在 List<Map<String,Object>>中怎么使用Java代码遍历获取String,Object的值?

EL表达式怎么获取Map的动态key?

golang 从 map 获取值时的值拷贝问题