美文网首页
Java 容器KV(一)- Map

Java 容器KV(一)- Map

作者: 贪睡的企鹅 | 来源:发表于2019-07-05 23:33 被阅读0次

Map定义

Map 是 Key-Value 对映射的抽象接口,该映射不包括重复的键,即一个键对应一个值。Map的key也可以为null,也不可重复。

Map接口

public interface Map<K,V> {
    // 查询操作
    /**
     * 返回键值对数量
     */
    int size();
    /**
     * Map是否为空
     */
    boolean isEmpty();
    /**
     * Map中是否包含指定的key
     */
    boolean containsKey(Object key);
    /**
     * Map中是否包含指定的value
     */
    boolean containsValue(Object value);
    /**
     * 根据key获取对应的value
     */
    V get(Object key);
    
    // Modification Operations
    /**
     * 插入键值对,如果Map中已经存在该key,则新的value会覆盖原来的value
     */
    V put(K key, V value);
    /**
     * 移除指定key对应的键值对,并返回相应的value
     */
    V remove(Object key);
    // 批量操作
    /**
     * 将另一个Map中的键值对全部复制过来
     */
    void putAll(Map<? extends K, ? extends V> m);
    /**
     * 移除所有键值对
     */
    void clear();
    // 视图
    /**
     * 返回包含Map中所有key的(Set类型)键视图,对Map的修改也会影响到键视图
     */
    Set<K> keySet();
    /**
     * 返回包含Map中所有value的(Collection类型)值视图,对Map的修改也会影响到值视图
     */
    Collection<V> values();
    /**
     * 返回包含Map中所有键值对的(java.util.Map.Entry类型)键值对视图
     */
    Set<Map.Entry<K, V>> entrySet();
    /**
     * Map 键值对接口
     */
    interface Entry<K,V> {
        /**
         * 返回键
         */
        K getKey();
        /**
         * 返回值
         */
        V getValue();
        /**
         * 设置键
         */
        V setValue(V value);
        boolean equals(Object o);
        int hashCode();
        /**
         * 键比较器(内部比较器)
         */
        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());
        }
        /**
         * 值比较器(内部比较器)
         */
        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());
        }
        /**
         * 键比较器(外部比较器)
         */
        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());
        }
        /**
         * 值比较器(外部比较器)
         */
        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());
        }
    }
    // 比较和散列
    boolean equals(Object o);
    int hashCode();
}

SortedMap

SortedMap规定了元素在Map中的排序功能.

public interface SortedMap<K,V> extends Map<K,V> {

 // key的比较器
 Comparator<? super K> comparator();
 
 // 返回fromKey(包含)到toKey(不包含)之间的元素组成的子map
 SortedMap<K,V> subMap(K fromKey, K toKey);
 
 // 返回小于toKey(不包含)的子map
 SortedMap<K,V> headMap(K toKey);
 
 // 返回大于等于fromKey(包含)的子map
 SortedMap<K,V> tailMap(K fromKey);
 
 // 返回最小的key
 K firstKey();
 
 // 返回最大的key
 K lastKey();
 
 // 返回key集合
 Set<K> keySet();
 
 // 返回value集合
 Collection<V> values();
 
 // 返回节点集合
 Set<Map.Entry<K, V>> entrySet();
}

NavigableMap

public interface NavigableMap<K,V> extends SortedMap<K,V> {

 // 小于给定key的最大节点
 Map.Entry<K,V> lowerEntry(K key);
 
 // 小于给定key的最大key
 K lowerKey(K key);
 
 // 小于等于给定key的最大节点
 Map.Entry<K,V> floorEntry(K key);
 
 // 小于等于给定key的最大key
 K floorKey(K key);
 
 // 大于等于给定key的最小节点
 Map.Entry<K,V> ceilingEntry(K key);
 
 // 大于等于给定key的最小key
 K ceilingKey(K key);
 
 // 大于给定key的最小节点
 Map.Entry<K,V> higherEntry(K key);
 
 // 大于给定key的最小key
 K higherKey(K key);
 
 // 最小的节点
 Map.Entry<K,V> firstEntry();
 
 // 最大的节点
 Map.Entry<K,V> lastEntry();
 
 // 弹出最小的节点
 Map.Entry<K,V> pollFirstEntry();
 
 // 弹出最大的节点
 Map.Entry<K,V> pollLastEntry();
 
 // 返回倒序的map
 NavigableMap<K,V> descendingMap();
 
 // 返回有序的key集合
 NavigableSet<K> navigableKeySet();
 
 // 返回倒序的key集合
 NavigableSet<K> descendingKeySet();
 
 // 返回从fromKey到toKey的子map,是否包含起止元素可以自己决定
 NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive,
 K toKey, boolean toInclusive);
 
 // 返回小于toKey的子map,是否包含toKey自己决定
 NavigableMap<K,V> headMap(K toKey, boolean inclusive);
 
 // 返回大于fromKey的子map,是否包含fromKey自己决定
 NavigableMap<K,V> tailMap(K fromKey, boolean inclusive);
 
 // 等价于subMap(fromKey, true, toKey, false)
 SortedMap<K,V> subMap(K fromKey, K toKey);
 
 // 等价于headMap(toKey, false)
 SortedMap<K,V> headMap(K toKey);
 
 // 等价于tailMap(fromKey, true)
 SortedMap<K,V> tailMap(K fromKey);
}

相关文章

  • Java 容器KV(一)- Map

    Map定义 Map 是 Key-Value 对映射的抽象接口,该映射不包括重复的键,即一个键对应一个值。Map的k...

  • java面试题(二)

    Java 容器模块 1、Java 容器都有哪些?Java 容器分为 Collection 和 Map 两大类,其下...

  • Java面试题

    Java基础 容器 1.Java容器都有哪些 总体分为Collection 、Map,细分为List、Set、Ma...

  • Java容器:Map

    1. Map概述1.1. Map类的继承关系1.2. 几个Map接口类概念1.3. Map类的通用方法 2. Ha...

  • Java容器 - Map

    Map

  • Java 容器类 - Map

    Java 容器类 - Map sschrodinger 2019/03/24 参考 mengzhisuoliu 博...

  • 2.Java容器

    1.Java的容器都有哪些?主要分为Collect和Map容器。其中Collect容器又细分为:Set、List、...

  • Java面试准备 Java容器

    1.Java容器有哪些 Java容器分为两大类 collection和Map,其下面又有很多子类。 collect...

  • Map的遍历

    根据阿里巴巴Java开发手册规范,使用entrySet遍历Map类集合kv,而不是keySet进行遍历。 说明:k...

  • 容器

    1、java容器有哪些? 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的...

网友评论

      本文标题:Java 容器KV(一)- Map

      本文链接:https://www.haomeiwen.com/subject/ecxuhctx.html