Map是一种依照键存储元素的容器。 在map中键可以是任意类型的对象。 map中不能有重复的键,每个键都有一个对应的值。 Map是一个集合,一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。
Map的特点:
1.包含键(key)值(value)对
2.键(K)唯一
3.键(key)对应的值(value)唯一
Map和Collection的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
Map集合的功能概述
1:
添加功能
V put(K key,V value):
添加元素。这个其实还有另一个功能
如果键是第一次存储,就直接存储元素,返回
null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
2:
删除功能
void clear():
移除所有的键值对元素
V remove(Object key)
:根据键删除键值对元素,并把值返回
3:
判断功能
boolean containsKey(Object key)
:判断集合是否包含指定的键
boolean containsValue(Object value):
判断集合是否包含指定的值
boolean isEmpty()
:判断集合是否为空
4:
获取功能
Set<Map.Entry<K,V>> entrySet():???
V get(Object key):
根据键获取值
Set keySet():
获取集合中所有键的集合
Collection values():
获取集合中所有值的集合
5
:长度功能
int size()
:返回集合中的键值对的对数
Map常用的子类有:HashTable、HashMap、TreeMap
Hashtable:线程安全,速度快。底层是哈希表数据结构。是同步的。
不允许null作为键,null作为值。
不允许null作为键,null作为值。
HashMap:线程不安全,速度慢。底层也是哈希表数据结构。是不同步的。
允许null作为键,null作为值。替代了Hashtable.
允许null作为键,null作为值。替代了Hashtable.
LinkedHashMap: 可以保证HashMap集合有序。存入的顺序和取出的顺序一致。
TreeMap:可以用来对Map集合中的键进行排序.
Map 集合的遍历与 List 和 Set 集合不同。Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。
1.使用Iterator遍历
2.在for-each循环中遍历keys或values
3.通过键找值遍历
4 在for-each循环中使用entries来遍历.