目录

 

keySet()

values()

equals(Object o)

hashCode()

toString()

eq(Object o1, Object o2)

静态内部类


keySet()

作用:返回当前Map中所有key组成的set。

values()

作用:返回当前Map中所有value组成的Collection。

equals(Object o)

作用:判断当前Map和Object o 是否相等。

hashCode()

作用:计算Map的hash值。

toString()

作用:返回Map对应的String。

eq(Object o1, Object o2)

作用:simpleEntry和simpleImmutableEntry的实用方法,测试是否相等,检查是否为空值。

静态内部类

public static class SimpleEntry<K,V>  implements Entry<K,V>, java.io.Serializable

一种保存key和value的entry 。可以使用setValue方法更改该value。

public static class SimpleEntry<K,V>
        implements Entry<K,V>, java.io.Serializable
    {
        private static final long serialVersionUID = -8499721149061103585L;

        //key有final修饰,是无法修改的
        private final K key;
        private V value;

        //用key和value初始化       
        public SimpleEntry(K key, V value) {
            this.key   = key;
            this.value = value;
        }

        //用entry来初始化
        public SimpleEntry(Entry<? extends K, ? extends V> entry) {
            this.key   = entry.getKey();
            this.value = entry.getValue();
        }

        //获取key
        public K getKey() {
            return key;
        }

        //获取value
        public V getValue() {
            return value;
        }

        //设置value,并返回旧的value
        public V setValue(V value) {
            V oldValue = this.value;
            this.value = value;
            return oldValue;
        }

        //比较当前entry和o是否相等
        public boolean equals(Object o) {
            //o必须是Entry类型,否则返回false
            if (!(o instanceof Map.Entry))
                return false;
            //将o强转成Entry类型
            Map.Entry<?,?> e = (Map.Entry<?,?>)o;
            //比较当前entry和o的key和value是否都相等
            return eq(key, e.getKey()) && eq(value, e.getValue());
        }
    
        //计算当前entry的hash值
        public int hashCode() {
            //将entry的key的hash值与value的hash值进行异或运算
            return (key   == null ? 0 :   key.hashCode()) ^
                   (value == null ? 0 : value.hashCode());
        }
    
        //返回entry对应的String
        public String toString() {
            return key + "=" + value;
        }

    }

public static class SimpleImmutableEntry<K,V>  implements Entry<K,V>, java.io.Serializable

一种保存key和value的不可变entry 。

public static class SimpleImmutableEntry<K,V>
        implements Entry<K,V>, java.io.Serializable
    {
        private static final long serialVersionUID = 7138329143949025153L;

        //key和value都是不可变的
        private final K key;
        private final V value;

        //用key、value初始化
        public SimpleImmutableEntry(K key, V value) {
            this.key   = key;
            this.value = value;
        }

        //用entry初始化
        public SimpleImmutableEntry(Entry<? extends K, ? extends V> entry) {
            this.key   = entry.getKey();
            this.value = entry.getValue();
        }

        //获取key
        public K getKey() {
            return key;
        }

        //获取value
        public V getValue() {
            return value;
        }

        //不支持该操作,抛出异常
        public V setValue(V value) {
            throw new UnsupportedOperationException();
        }

        //比较当前entry和o是否相等
        public boolean equals(Object o) {
            //如果o不是Entry类型,返回false
            if (!(o instanceof Map.Entry))
                return false;
            //将o转成Entry,比较当前entry对应的key和value与它是否相等
            Map.Entry<?,?> e = (Map.Entry<?,?>)o;
            return eq(key, e.getKey()) && eq(value, e.getValue());
        }

        //计算当前entry的hash值
        public int hashCode() {
            //将entry的key和value的hash值进行异或运算
            return (key   == null ? 0 :   key.hashCode()) ^
                   (value == null ? 0 : value.hashCode());
        }

        //获取当前entry对应的String
        public String toString() {
            return key + "=" + value;
        }

    }

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐