java8源码详解--Map构架

Map构架详解

欢迎 start


map构架图

Map构架图

map结构简介

  1. Map接口:以 键值对 储存内容的映射接口.
  2. SortedMap接口:继承Map接口,所以其也是以键值对储存信息的.另外,通过其内部的comparator()方法来对map的键值对进行排序.
  3. NavigableMap接口:继承自SortedMap接口,其有一系列的导航方法.如:获取大于/等于某对象的键值对 ···等方法
  4. AbstractMap抽象类:实现了Map接口的大部分方法.避免重复编码.
  5. TreeMap类:继承AbtractMap类并实现NavigableMap接口中的方法.所以其是有序的键值对.
  6. HashMap类:继承自AbstractMap类,是无序的键值对.
  7. WeakHashMap类:同样是无序的键值对,但是其键是弱键.
  8. HashTable类:继承自Directionary类,并自己实现Map接口的类,其特点是:无序的键值对,并且线程安全.

下面简单介绍一下上图中的各个接口内容

Map接口

签名如下:public interface Map<K,V> {}

Map接口的特点:

  1. Map中的键值对不能包含重复的键,每个键只能对应一个值.并且Map中的键可为null,且最多一个.值可重复,并且可以为null.

    Map<String,String> sMap = new HashMap<>(); 
    sMap.put(null, "ss");
    sMap.put("key2", null);
    sMap.put(null, "ss2");
    System.out.println(sMap.keySet()+":"+sMap.values());
    

    控制台输出:[null, key2]:[ss2, null]

  2. Map中提供了以键值集 键集 值集 来查看map内容.

  3. entrySet() 方法返回键值集对象.
  4. 也提供了许多其他访问,修改的方法。后续会详解.

Map.Entry接口

  1. Map.Entry接口是Map接口的内部接口.
  2. Map通过 entrySet() 获取Map.Entry的键值对集合,从而通过该集合实现对键值对的操作。

AbstractMap抽象类

类签名 : public abstract class AbstractMap<K,V> implements Map<K,V> {}

  1. AbstractMap抽象类主要是实现Map接口中的方法.详细方法请看HashMap中的详解

SortedMap接口

  1. SortedMap的排序自然排序 或者 用户指定比较器。 插入有序 SortedMap 的所有元素都必须实现 Comparable 接口(或者被指定的比较器所接受)。
  2. SortedMap实现类必须提供四种

     (01) void(无参数)构造方法,它创建一个空的有序映射,按照键的自然顺序进行排序。
    (02) 带有一个 Comparator 类型参数的构造方法,它创建一个空的有序映射,根据指定的比较器进行排序。
    (03) 带有一个 Map 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系与参数相同,按照键的自然顺序进行排序。
    (04) 带有一个 SortedMap 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系和排序方法与输入的有序映射相同。无法保证强制实施此建议,因为接口不能包含构造方法。
    

接口签名: public interface NavigableMap

Dictionary抽象类

类签名:public abstract class Dictionary<K,V> {}

    其也是 键值对 的类,类似于AbstractMap,也提供了常用的一些方法.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值