目录
一、Map集合的特点
1、以键值对key-value的方法存储数据
2、key不能重复,可看作一个set集合,value可以重复
二、Map的实现类
1、HashMap(最主要常用)
i)线程不安全的,效率高
ii)底层是使用数组+单向链表+红黑树结构存储(JDK8)
iii)子类LinkedHashMap
在HashMap使用数据结构的基础上,增加一对双向链表,记录元素的先后顺序,故我们在遍历元素时就可以按照添加的顺序显示
开发中,对于频繁的遍历操作,建议使用此类。
2、TreeMap
i)底层是红黑树结构
ii)可按照添加的key-value中的key元素的指定属性的大小顺序进行遍历。
iii)需要考虑自然排序和定制排序
3、Hashtable
i)古老实现类,线程安全的,效率低
ii)子类Properties:
key和value都是String类型,常用来处理属性文件
三、HashMap详解
1、元素特点
i)key是无序、不可重复,所有key就构成一个set集合。故key所在的类要求重写equals() 和 hashCode()方法。
ii)value是无序、可重复,所有value就构成一个Collection集合。故value所在的类只要求重写equals() 方法。
iii)HashMap中的一个key-value,就构成一个Entry
2、HashMap常用方法
i)添加、修改操作
Object put(Object key,Object value) 将指定key-value添加(或修改)当前的map对象中,
找到的话就是修改同时返回旧的value,没找到就是添加.
void putAll(Map m):将m中所有key-value对存放到当前map中
ii)删除操作
Object remove(Object key):移除指定key的key-value对,并返回value
void clear():清空当前map中的所有数据
iii)元素查询
Object get(Object key) :获取指定key对应的value
boolean containsKey(Object key):是否包含指定的key
boolean containsValue(Object value):是否包含指定的value
boolean isEmpty():判断当前map是否为空
boolean equals(Object obj):判断当前map和参数对象obj是否相等
iv)长度
size()
v)遍历
1)遍历key集:
Set keyset():返回所有key构成的Set集合
2)遍历value集:
Collection values():返回所有value构成的Collection集合
3)遍历Entry集:
Set entrySet():返回所有key-value对构成的Set集合