JDK1.8源码解析之 AbstractMap

235 阅读2分钟

概述

此类提供了Map接口的基本实现,以最大程度地减少实现此接口所需的工作。要实现不可修改的Map,程序员只需扩展此类并为entrySet方法提供实现,该方法将返回Map映射的set-view。通常,返回的set将依次在AbstractSet之上实现。该集合不支持add或remove方法,并且其迭代器不支持remove方法。要实现可修改的map,程序员必须另外重写此类的 put 方法(否则将抛出UnsupportedOperationException)并由entrySet().iterator() 必须另外实现其remove方法。根据 Map 接口规范中的建议,程序员通常应提供一个void(无参数)构造器和map构造函数。根据 Map 接口规范中的建议,程序员通常应提供一个void(无参数)构造器和map构造函数。此类中每个非抽象方法的文档详细描述了其实现。如果要实现的map允许更有效的实现,则可以重写这些方法。

继承关系

public abstract class AbstractMap<K,V> implements Map<K,V>

实现了Map接口

成员属性

构造器

唯一的构造函数。用于子类构造函数的调用,通常是隐式的。

protected AbstractMap() {}

关键方法

size()

list的大小

public int size() {
    return entrySet().size();
}
isEmpty()

判断是否为空

public boolean isEmpty() {
    return size() == 0;
}
containsValue()

判断是否包含了某个value

public boolean containsValue(Object value)
containsKey()

判断是否包含了某个key

public boolean containsKey(Object key)
get()

根据key获取value

public V get(Object key)
put()

添加一个元素,返回value

public V put(K key, V value) {
    throw new UnsupportedOperationException();
}
remove()

删除所有元素

public V remove(Object key)
putAll()

把一个Map的所有元素存入当前对象

public void putAll(Map<? extends K, ? extends V> m)
clear()

清除所有元素

public void clear() {
    entrySet().clear();
}
keySet()

返回key的集合

public Set<K> keySet()
values()

返回value的集合

public Collection<V> values()
Set()

返回entrySet()

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

判断两个Map是否相等。 要么是同一个Map,要么是不同的Map,但是元素完全相同。

public boolean equals(Object o)

希望和大家多多交流


我16年毕业以后,做的是前端,目前打算深入学习java开发。内容有任何问题,欢迎各位小伙伴们指正,也希望小伙伴们给我点赞和关注,给我留言,一起交流讨论,共同进步。