一、集合框架源码分析
- 集合框架 (第 01 篇) 源码分析:Collection<E> 框架总览
- 集合框架 (第 02 篇) 源码分析:Map<K,V > 框架总览
- 集合框架 (第 03 篇) 源码分析:ArrayList<E>
- 集合框架 (第 04 篇) 源码分析:LinkedList
- 集合框架 (第 05 篇) 源码分析:Map<K, V>接口与其内部接口Entry<K,V>
- 集合框架 (第 06 篇) 源码分析:哈希冲突(哈希碰撞)与解决算法
- 集合框架 (第 07 篇) 源码分析:jdk1.7版 HashMap
- 集合框架 (第 08 篇) 源码分析:HashMap、Hashtable、ConcurrentHashMap之间的区别
- 集合框架 (第 09 篇) 源码分析:jdk1.7版 ConcurrentHashMap
- 集合框架 (第 10 篇) 源码分析:二叉树、平衡二叉树、二叉查找树、AVL树、红黑树
- 集合框架 (第 11 篇) 源码分析:jdk1.8版 HashMap
- 集合框架 (第 12 篇) 源码分析:jdk1.8版 ConcurrentHashMap
- 集合框架 (第 13 篇) 源码分析:LinkedHashMap
- 集合框架 (第 14 篇) 源码分析:TreeMap
- 集合框架 (第 15 篇) 源码分析:Set<E> 集合
- 集合框架 (第 16 篇) 源码分析:BlockingQueue 接口
- 集合框架 (第 17 篇) 源码分析:CopyOnWriteArrayList 与 CopyOnWriteArraySet
原文持续更新链接: https://github.com/about-cloud/JavaCore
正文
本文是基于
jdk1.7.0_71
分析
一、Map接口
Map接口是整个 Key-Value 存储容器的核心。它 抽(qǔ)(xíng)象 定义了 Key-Value 结构的容器框架。Map不会像 数组 中元素那样可以单独存放,到像似
LinkedList
中的节点自定义,那么特殊的节点一定需要特殊的定义来描述。在jdk1.7
及其之前的版本,Map的作者将其节点描述为 Entry ,Entry不是入口、大门,它在这里称为 项目 或 条目 ,下文简称为 项。Map 中的每个节点称为一项
。
二、Map.Entry
Entry<K, V> 是Map内部的接口,其中定义了一些方法:
// 返回此项对应的key
K getKey();
// 返回此项对应的value
V getValue();
// 设置此项中value值
V setValue(V value);
// 将指定的对象与此项进行比较
boolean equals(Object o);
// 返回此项的哈希码值
int hashCode()
Entry 项 的定义很简单,主要是记住它是 Key-Value 形式,并有一些get/set方法。
三、Map中的方法
方法 意味着 行为。下面Map的方法意味着整个Map框架具有最基本的、什么样的 功能。明白这些方法,就掌握了Map框架核心操作功能。
// 返回 map 中键值对的数量
int size();
// 返回 true 表示map中不包含键值对
boolean isEmpty();
// 判断比较map中是否含有指定对象相等的key,如果含有返回true
boolean containsKey(Object key);
// 判断比较map中是否含有指定对象相等的value,如果含有返回true
boolean containsValue(Object value);
// 通过key获取对应的value
V get(Object key);
// 放入 key-value键值对,并返回value
V put(K key, V value);
// 通过指定key的一项,并返回此项中的value
V remove(Object key);
// 放入另一个map
void putAll(Map<? extends K, ? extends V> m);
// 清空map
void clear();
// 返回map中key的Set集合
Set<K> keySet();
// 将map中的value以Collection的形式返回
Collection<V> values();
// 返回map中多个项的Set集合(此方法适合既获取key又获取value的场景)(请记住这个方法,非常实用)
Set<Map.Entry<K, V>> entrySet();
// 将指定的对象与map项进行比较
boolean equals(Object o);
// 返回map的哈希码
int hashCode();
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
再次提醒,请熟记这次基础方法。