集合框架 (第 05 篇) 源码分析:Map接口与其内部接口Entry

一、集合框架源码分析

  • 集合框架 (第 01 篇) 源码分析:Collection 框架总览
  • 集合框架 (第 02 篇) 源码分析:Map 框架总览
  • 集合框架 (第 03 篇) 源码分析:ArrayList
  • 集合框架 (第 04 篇) 源码分析:LinkedList
  • 集合框架 (第 05 篇) 源码分析:Map接口与其内部接口Entry
  • 集合框架 (第 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 集合
  • 集合框架 (第 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 是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 m);
// 清空map
void clear();
// 返回map中key的Set集合
Set keySet();
// 将map中的value以Collection的形式返回
Collection values();
// 返回map中多个项的Set集合(此方法适合既获取key又获取value的场景)(请记住这个方法,非常实用)
Set> entrySet();
// 将指定的对象与map项进行比较
 boolean equals(Object o);
// 返回map的哈希码
int hashCode();

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

再次提醒,请熟记这次基础方法。

原文持续更新链接: https://github.com/about-cloud/JavaCore

你可能感兴趣的:(集合框架 (第 05 篇) 源码分析:Map接口与其内部接口Entry)