java - hashmap中入口类中的hashcode和equals是什么

标签 java hashmap

我可以看到java中Hashmap中的静态Entry类有Equals和Hashcode方法。这些方法的目的是什么。put,get方法我们使用对象hashcode和equals方法......

static class Entry<K,V> implements Map.Entry<K,V> {
    final K key;
    V value;
    Entry<K,V> next;
    final int hash;

    /**
     * Creates new entry.
     */
    Entry(int h, K k, V v, Entry<K,V> n) {
        value = v;
        next = n;
        key = k;
        hash = h;
    }

    public final boolean equals(Object o) {
        if (!(o instanceof Map.Entry))
            return false;
        Map.Entry e = (Map.Entry)o;
        Object k1 = getKey();
        Object k2 = e.getKey();
        if (k1 == k2 || (k1 != null && k1.equals(k2))) {
            Object v1 = getValue();
            Object v2 = e.getValue();
            if (v1 == v2 || (v1 != null && v1.equals(v2)))
                return true;
        }
        return false;
    }

    public final int hashCode() {
        return (key==null   ? 0 : key.hashCode()) ^
               (value==null ? 0 : value.hashCode());
    }

    public final String toString() {
        return getKey() + "=" + getValue();
    }

最佳答案

Map.Entry 是映射中键值对的表示。所有这些方法都可以用于比较键值对,而不是比较键对象。

关于java - hashmap中入口类中的hashcode和equals是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56906189/

相关文章:

java - 为什么在增强 for 循环后返回 i 时会出现编译错误?

java - 我使用 Java HashMap 越多,性能下降得越多 - 即使大小稳定

java - ArchUnit - 确保方法参数被注释

java - Butterknife 不适用于 fragment

ruby - 按键排序散列,在 Ruby 中返回散列

java - 将字符串链接到函数

java - 基于 Value 然后 Key 对 HashMap 进行排序?

arrays - Perl在输入条件之前更改条件内的值?

java - AsyncTask - onPostExecute UI 混淆

java - 为什么这个assertThat断言会抛出AssertionError?