Map与AbstractMap

2018-05-21  本文已影响0人  囧囧有神2号

map是什么?键值对,key-value映射就是map。我们从三个角度分析:keyset,values,Entry。
keyset
keyset是键key的Set集合,可以看出对于键map是不允许重复的,所以需要重写equals,hashCode方法,来保证正确的相等性比较。通过Map.keySet() 获取。
values
values是值Value的Collection集合,可以看出这里键与值的要求不同,通过 Map.values() 方法获得。
entrySet
Entry 是 Map 接口中的静态内部接口,表示一个键值对的映射。内部的一些方法:

通过 Map.entrySet() 方法获得的是一组 Entry 的集合,保存在 Set 中,所以 Map 中的 Entry 也不能重复。

public Set<Map.Entry<K,V>> entrySet();

下面是Java集合的继承关系,可以看出Map实现类主要有:

AbstractMap

AbstractMap 提供了 Map 的基本实现。
AbstarctMap 中唯一的抽象方法:

public abstract Set<Entry<K,V>> entrySet();

和AbstractCollection,AbstractList 作用相似, AbstractMap 是一个基础实现类,实现了 Map 的主要方法,默认不支持修改。
正如Map 接口中有内部类 Map.Entry 一样, AbstractMap 也有两个内部类:

SimpleEntry 与 SimpleImmutableEntry 唯一的区别就是支持 setValue() 操作。

上一篇 下一篇

猜你喜欢

热点阅读