Map
Map ,是一个接口 是双列集合的顶级
Collection 也是一个接口,是单列集合的顶级
Map:是以键值对的形式来进行存储(Key,Values);
Map 里的键都是唯一的,不能够重复, values是可以重复,每一个键只能对应一个值(一一对应,就是映射的关系)
Map 的具体实现类有 HashMap(重点) TreeMap Hashtable(比较少)
Map.Entry<K,V> 的解释 : 也就是map 有一个内部接口的名字叫Entry
map 常规的一些方法:(添加的方法) V put(K key,V value) 通过键值对来进行添加
移除的方法: V remove(Object key) 通过键来删除键值对 (没有根据索引来移除)
判断类型的方法: boolean containsKey(Object key) 判断这个键是否存在
boolean containsValue(Object value) 判断这个值是否存在
boolean isEmpty() 是否存在元素
获取性的方法: void clear() 清除所有的元素
V get(Object key) 通过键来获取值
int size() 获取集合的长度
Collection values() 获取所有的values()
Set keySet() 获取map中所有的键 返回值是一个Set
修改:根据键来修改值,键必须存在 V put(K key,V value)
Collection 与 Map
Collection 与 Map的区别
单列集合(存的数据都是独立) 双列集合 (以键值对进行存储)
单列集合的数据结构都是都是具体的数据 双列集合的数据结构都是正对与键
单列中的set集合不能出现重复的数据 双列集合是键不能出现重复的数据
双列集合的遍历方式:
1.获取到所有的key,来得到具体的值
2. 把每一组数据当成是一个整体来进行遍历
map集合里嵌套map 集合来进行遍历: 规律:从外层往内层剥皮
HashMap
父接口是map 它的存储方式也是以hash表的结构来进行存储 无序
(Map)
HashMap 与HashSet : 都是以hash表结构来进行存储(查询速度快) HashSet 相当于 map 里没有values 那一部分,只用去关注键的那一部分(hash值 与equals()来判断键是否重复)
HashMap:只关注键,不关注值(任意的值都可以,还可以重复 )
HashMap 的一个子类是LinkedHashMap: 也是数组加上双重链表来进行存储, 有序
Hashtable HashMap 的区别
1. 版本不一样: Hashtable 1.0 HashMap 1.2
2 Hashtable 不符合命名规范 HashMap 是符合
3. Hashtable 线程安全,效率地 HashMap 线程不安全 ,效率高
4. HashMap 已经替换掉 Hashtable 常用hashMap