Java(JDK1.9)集合框架归纳总结——Map接口继承体系

本文深入剖析JDK1.9中Map接口的实现体系,分为三层:AbstractMap和SortedMap是基础,HashMap、WeakHashMap、IdentityHashMap、HashTable和TreeMap各有特点。HashMap基于哈希表,提供O(1)操作时间,可转化为红黑树;SortedMap定义了有序Map,TreeMap使用红黑树实现;WeakHashMap的key为弱引用,IdentityHashMap基于对象相等性;HashTable线程安全但已废弃,推荐使用ConcurrentHashMap。LinkedHashMap结合链表与HashMap,提供有序访问。
摘要由CSDN通过智能技术生成

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK

Map接口实现概述

Map的实现体系中,常用的类和接口可以大致分为三层。下面一一说明这些类或接口的特点和作用。

第一层

第一层包含一个抽象类AbstractMap和一个接口SortedMap。AbstractMap简单实现了Map接口的大部分操作,降低了实现Map接口的难度,第二层的所有类均继承了该类,它是Map接口的框架性形式。SortedMap接口定义了有序Map需要遵循的规则和实现的方法,有序Map都需要实现该接口。

AbstractMap

该类提供了一个Map接口的框架性实现,降低了实现Map接口的难度。该Map实现允许存入null值。它实现了Map接口的绝大多数方法,如get(Object):

 /**
     * {
   @inheritDoc}
     *
     * 通过entrySet().iterator()对map进行遍历,如果key等于null,则找出ey为
     * null的映射,并返回它的value。如果key不等于null,则找到匹配的映射,并返回value。
     * 如果找不到匹配的key,则返回null。
     * 该方法花费线性时间,很多实现会重写该方法。
     * 由于该实现允许null值的插入,因此不可以仅仅通过返回值来判断key是否存在。这在Map接口中已经说过,
     * 可以结合containsKey方法进行判断。
     * @implSpec
     * This implementation iterates over {
   @code entrySet()} searching
     * for an entry with the specified key.  If such an entry is found,
     * the entry's value is returned.  If the iteration terminates without
     * finding such an entry, {
   @code null} is returned.  Note that this
     * implementation requires linear time in the size of the map; many
     * implementations will override this method.
     *
     * @throws ClassCastException            {
   @inheritDoc}
     * @throws NullPointerException          {
   @inheritDoc}
     */
    public V get(Object key) {
        Iterator<En
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值