Map集合
概述: 接口Map<K, V>
K: 此映射所维护的键的类型
V: 映射值的类型
将键映射到值的对象。一个映射不能包含重复的键; 每个 键最多只能映射到一个值。
基本功能:
V put(K key,V value)
将指定的值与此映射中的指定键关联。键相同 值覆盖
V remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除。
void clear()
从此映射中移除所有映射关系
boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。
boolean isEmpty()
如果此映射未包含键-值映射关系,则返回 true。
int size()
返回此映射中的键-值映射关系数。
获取功能:
V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关 系,则返回 null。
Set<K> keySet()
返回此映射中包含的键的 Set 视图。
Collection<V> values()
返回此映射中包含的值的 Collection 视图。
遍历:
方式1)键找值。keySet() 和get()
HashMap<Integer, Student> hashMap = new HashMap<>();
Set<Integer> keys = hashMap.keySet();
for (Integer key : keys){
Student student = hashMap.get(key); System.out.println(key+"-"+student.getName()+"-"+student.getAge());
}
方式2)键值对对象找键和值 entrySet()
HashMap<Integer, Student> hashMap = new HashMap<>();
Set<Map.Entry<Integer, Student>> entries = hashMap.entrySet();
for (Map.Entry<Integer, Student> entry: entries){
Integer key = entry.getKey();
Student value = entry.getValue(); System.out.println(key+"-"+value.getName()+"-"+value.getAge());
}
实现类:HashMap,Hashtable,TreeSet
HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
LinkedMap
概述: Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序
特点: 底层的数据结构是链表和哈希表 元素有序 并且唯一, 元素的有序性由链表数据结构保证 唯一性由 哈希表数据结构保证
TreeMap
概述:键的数据结构是红黑树,可保证键的排序和唯一性
,排序分为自然排序和比较器排序,线程是不安全的效率 比较高。