JDK之Map源码解读(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32523587/article/details/86377985

目录

size()

isEmpty()

containsKey(Object key)

containsValue(Object value)

get(Object key)

put(K key, V value)

remove(Object key)

putAll(Map m)

clear()

keySet()

values()

entrySet()

 equals(Object o)

hashCode()

getOrDefault(Object key, V defaultValue)

forEach(BiConsumer action)


Map是一个接口。里面存储的是键值对,一个Map中不能包含重复的key,每个key最多只能对应一个value。

size()

作用:返回键值对的个数。

isEmpty()

作用:判断Map是否为空,如果不包含任何键值对,返回true。

containsKey(Object key)

作用:判断Map中是否包含指定的key。

containsValue(Object value)

作用:判断Map中是否包含指定的value。

get(Object key)

作用:通过指定的key获取value。

put(K key, V value)

作用:将键值对放入Map中。

remove(Object key)

作用:删除Map中指定key对应的键值对。

putAll(Map<? extends K, ? extends V> m)

作用:将指定map中所有键值对复制到该map中。

clear()

作用:清空Map中所有键值对。

keySet()

作用:返回Map中所有的key,结果封装在Set中。

values()

作用:返回Map中所有的value,结果是Collection类型。

entrySet()

作用:返回Map中所有的键值对,结果封装在Set中,Set中每一个元素类型是Entry。

其中,Entry是Map的一个内部接口,包含以下方法:


        //获取键值对中的key
        K getKey();
        
        //获取键值对中的value
        V getValue();

        //设置键值对中的value
        V setValue(V value);
        
        //判断键值对是否等于o
        boolean equals(Object o);
        
        //键值对的hashCode
        int hashCode();

        //实现基于key的比较器,实际的比较方法需要key的类型K来实现compareTo方法
        public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> c1.getKey().compareTo(c2.getKey());
        }

        ////实现基于value的比较器,实际的比较方法需要value的类型V来实现compareTo方法
        public static <K, V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue() {
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> c1.getValue().compareTo(c2.getValue());
        }

        //实现基于key的比较器,实际的比较方法需要根据指定的比较器cmp的实现
        public static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp) {
            Objects.requireNonNull(cmp);
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> cmp.compare(c1.getKey(), c2.getKey());
        }

        //实现基于value的比较器,实际的比较方法需要根据指定的比较器cmp的实现
        public static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp) {
            Objects.requireNonNull(cmp);
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> cmp.compare(c1.getValue(), c2.getValue());
        }
    

 equals(Object o)

作用:比较Map和指定的对象o是否相等。

hashCode()

作用:返回Map的hash code。

getOrDefault(Object key, V defaultValue)

作用:获取Map中指定的key对应的value。如果不存在,则返回默认值defaultValue。

forEach(BiConsumer<? super K, ? super V> action)

作用:遍历Map,将其中每个键值对作为参数传入到action的accept方法中去执行。

猜你喜欢

转载自blog.csdn.net/qq_32523587/article/details/86377985
今日推荐