我用 eid
和 ename
写了一个 Employee
类,用 setter 和 getter 覆盖了 equals()
和 hashcode()
。
现在我编写了另一个类 HashMapTest
,我在其中创建了三个 Employee
对象。我将其中两个添加到 HashMap
中,第三个与第一个员工对象相同。
我的 HashMapTest 类如下:
public class HashMapTest {
public static void main(String[] args) {
Employee e1 = new Employee();
e1.setEid(1);
e1.setEname("Ganesh");
Employee e2 = new Employee();
e2.setEid(1);
e2.setEname("Mahesh");
Map<Employee, String> map = new HashMap<Employee, String>();
map.put(e1, "Software Developer");
map.put(e2, "Software Test Engineer");
Employee e3 = new Employee();
e3.setEid(1);
e3.setEname("Ganesh");
System.out.println("Getting employee e3 details " + map.get(e3));
}
}
我没有将 e3
添加到 HashMap
,但我仍然从 HashMap
中获取它。
请解释这背后的逻辑。
最佳答案
逻辑是 Map
为您提供相同键的相同值。您的 e3
与 e1
完全相同(从 map 的角度来看,因为您已经覆盖了 equals()
和 hashcode()
),并且您确实添加了一个 String
并将 e1
作为映射中的键。
关于java - 为什么我可以从具有不同对象的 HashMap 中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661983/