如何在Java HashMap中获取“相等”但哈希值不同的对象的值?

bluesky1年前 ⋅ 136 阅读

ChatGPT的回答仅作参考:

在Java中,如果两个对象的equals()方法返回true,则它们被认为是相等的。但是,如果它们的哈希码不同,则它们将被存储在HashMap中的不同桶中。

如果您想获取具有相等但哈希码不同的对象的值,可以使用get()方法。该方法将使用equals()方法来查找具有相等键的值,而不考虑哈希码。

例如,假设您有两个具有相等但哈希码不同的对象:

```
Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);
```

您可以将它们作为键存储在HashMap中:

```
Map<Person, String> map = new HashMap<>();
map.put(p1, "Value 1");
map.put(p2, "Value 2");
```

现在,如果您想获取具有相等键的值,可以使用get()方法:

```
String value1 = map.get(p1);
String value2 = map.get(p2);
```

在这种情况下,value1将是“Value 2”,因为它是最后一个插入到HashMap中的值。

全部评论: 0

    相关推荐