概述:
Map<K,V>接口:是双列集合的顶层父接口,K用来限制键的类型,V用来限制值的类型
- 特点:
1.Map集合存储元素是以键值对的形式进行存储
2.Map集合的键唯一,如果键重复了,就要覆盖之前的值;
3.Map集合是根据键取值
4.Map集合的值可以重复
- 实现类:
- HashMap集合:
键值对存取无序,键唯一。 由哈希表结构保证键唯一,所以键所属的类要重写hashCode()和equals()方法
- LinkedHashMap集合:
键值对存取有序,键唯一 。由哈希表结构保证键唯一,所以键所属的类要重写hashCode()和equals()方法,由链表保证键存取有序,那么就可以保证键值对的存取有序
- TreeMap集合:
根据键对键值对进行排序,键唯一。 由红黑树保证键唯一,通过比较器对键进行排序
构造方法:
public TreeMap(); 使用默认规则进行排序,要求键所属的类必须实现Comparable接口,重写compareTo方法,指定排序规则
public TreeMap(Comparator<? super K> comparator) 通过比较器指定规则排序
Map的常用方法:
- public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
- public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
- public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
判断和获取的方法:
- public boolean containsKey(Object key):判断该集合中是否有此键
- public boolean containsValue(Object value) 判断该集合中是否有此值
- public int size() 获取集合中键值对的个数
- public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
- public Collection<V> values() : 获取Map集合中所有的值,存储到Collection集合中。
- public Set<Map.Entry<K, V>> entrySet(): 获取到Map集合中所有的 键值对对象 的集合(Set集合)。
键值对: 2个对象,一个键对象,一个值对象
键值对对象: 1个对象,包装了键对象和值对象
Map.Entry<K,V>:
Entry<K, V>:是Map接口的内部接口,表示键值对对象类型