美文网首页
Map与AbstractMap

Map与AbstractMap

作者: 囧囧有神2号 | 来源:发表于2018-05-21 18:44 被阅读0次

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 接口中的静态内部接口,表示一个键值对的映射。内部的一些方法:

  • getKey() , 获取这组映射中的键 key
  • getValue() , 获取这组映射中的值 value
  • setValue() , 修改这组映射中的值
  • hashCode() , 返回这个 Entry 的哈希值
  • equals() , 对比 key-value 是否相等

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

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

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

  • Hashtable
    古老,线程安全
  • HashMap
    速度很快,但没有顺序
  • TreeMap
    有序的,效率比 HashMap 低
  • LinkedHashMap
    结合 HashMap 和 TreeMap 的有点,有序的同时效率也不错,仅比 HashMap 慢一点


    Map

AbstractMap

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

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

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

  • SimpleImmutableEntry, 表示一个不可变的键值对
  • SimpleEntry, 表示可变的键值对

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

相关文章

  • Map与AbstractMap

    map是什么?键值对,key-value映射就是map。我们从三个角度分析:keyset,values,Entry...

  • HashMap源码分析

    public class HashMap extends AbstractMap implements Map, ...

  • 非线程安全 Map 简谈

    Map 框架 Map 框架集成于 Map 接口,除了早期的 Map 类,其他类集成于 AbstractMap 抽象...

  • HashMap 2018-08-06

    Map:接口,定义了map的基本操作 AbstractMap:抽象类,提供了Map的基本实现

  • HashMap源码分析

    HashMap源码分析 HashMap继承自抽象类AbstractMap,Map中一些操作在AbstractMap...

  • java HashMap

    HashMap 继承了AbstractMap类 实现了 Cloneable Serializable Map 接口...

  • HashMap的实现原理

    Hashmap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializab...

  • HashMap的源码分析

    HashMap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializab...

  • 比较两个Map是否相同

    结论:对于所有继承于AbstractMap的map类(基本上jdk中的map都继承了),直接使用Map.equal...

  • Java源码-HashMap

    一、HashMap的继承关系 HashMap实现Map接口,同时继承了AbstractMap.Map接口定义了 g...

网友评论

      本文标题:Map与AbstractMap

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