

内容概览

1. Map
Map用于保存一对具有一对一映射关系的键值对,即每个Map元素至少都有键(key)与值(value)组成,其中key是唯一的,而value可重复。
Map是一个接口,此接口并没有继承Collection接口,所以Map中有许多方法与List和Set不一样,Map接口的实现类有HashMap与TreeMap,以HashMap为例演示Map的方法:

重复添加会更新数据
获取长度与删改:

长度与删改
获得key与value:

获得key与value
Map没有继承Iterable接口,故不能使用迭代器和for...each遍历,想要用迭代器遍历,需先将键值对存进Set容器:

Map不能直接使用迭代器
解释下Entry,还记得内部类吗,Entry实际上就是Map的一个内部接口,而HashMap的内部类实现了该接口:

内部类Entry

2. Map与Set的关系

Map作为Set的属性
在HashSet中,HashMap是作为属性存在的,即HashSet的底层是由HashMap实现的。
HashSet中许多方法都是直接调用HashMap的方法,如:

直接调用Map
同理TreeSet也是用TreeMap来组织数据的,不过与HashSet稍有不同的是,HashSet中的属性不是TreeMap,而是名为NavigableMap的接口,而该接口的实现类就是TreeMap:

TreeSet
鉴于Set的底层是Map,所以关于Map的示意图请参阅上一篇文章:
