集合类体系结构
Map集合概述
现实生活中,很多数据是成对存在的,比如:IP地址与主机名,身份证号与个人,学生与学号等。
这种一一对应的关系,叫做映射。java中提供了Map集合 ,用于保存具有映射关系的数据,称为双列集合。
Map集合的特点: Map
Map是一种键值对集合,每一个元素都包含一个 键对象(key)和一个值对象(value)
Map集合中,键不允许重复,值可以重复。(比如身份证与姓名)
键和值是一一对应的,通过键可以找到与之对应的唯一的值。
Map接口的常用实现类
HashMap:
底层采用的哈希表结构,元素的存取无序。(HashSet的底层其实是借助了HashMap实现存储)
要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
TreeMap:
TreeMap集合底层的数据结构是红黑树;可以对元素的键进行排序。
排序方式有两种:自然排序,比较器排序。(键的排序规则与TreeSet一样)
Map集合的基本功能
Map的遍历方式1:键找值方式
通过元素中的键,获取键所对应的值
分析步骤:
- 获取Map中所有的键,方法提示: keySet()
- 遍历键的Set集合,得到每一个键
- 根据键,获取键所对应的值。方法提示: get(K key)
Map.Entry接口
Map中将每个键和值封装成一个个的Entry
并提供 getKey() 和 getValue() 方法,用于获取Entry中封装的键和值
Map遍历方式2:键值对方式
1、获取map集合中所有Entry
2、遍历Entry的集合,获取每个Entry
3、使用 Entry
HashMap
HashMap的特点
HashMap底层是哈希表结构+链表/红黑树。
依赖hashCode方法和equals方法保证键的唯一。
如果键要存储的是自定义对象,需要重写hashCode和equals方法。
TreeMap
TreeMap的特点
TreeMap是Map里面的一个实现类。
TreeMap底层是红黑树结构;可以对元素的键进行排序。
排序方式有两种:Comparable自然排序, Comparator比较器排序。
TreeMap的排序
自然排序:使用无参构造器创建TreeMap集合,存入集合的键需要实现Comparable
比较器排序:使用带参构造器创建TreeMap集合,传入Comparator
TreeMap小结
TreeMap底层是红黑树结构的
依赖自然排序或者比较器排序,对键进行排序
排序方式
方式1:键实现Comparable接口。
方式2:通过TreeMap构造方法传入Comparator接口的实现类。