Map集合总结
Map
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值
方法
void clear() 从此映射中移除所有映射关系(可选操作)
boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value) 如果此映射为指定值映射一个或多个键,则返回 true
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 set 视图
boolean equals(Object o) 比较指定的对象与此映射是否相等
V get(Object key) 返回此映射中映射到指定键的值
int hashCode() 返回此映射的哈希码值
boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true
Set<K> keySet() 返回此映射中包含的键的 set 视图
V put(K key, V value) 将指定的值与此映射中的指定键相关联(可选操作)
void putAll(Map<? extends K,? extends V> t) 从指定映射中将所有映射关系复制到此映射中(可选操作)
V remove(Object key) 如果存在此键的映射关系,则将其从映射中移除(可选操作)
int size() 返回此映射中的键-值映射关系数
Collection<V> values() 返回此映射中包含的值的 collection 视图
HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变,线程不安全
特有方法
和Map父接口一模一样
LinkedHashMap
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序(有存入的顺序)。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。),线程不安全
特有方法
和父类接口HashMap一样
TreeMap
SortedMap 接口的基于红黑树的实现。此类保证了映射按照升序顺序排列关键字,(key不能为null)根据使用的构造方法不同,可能会按照键的类的自然顺序 进行排序(参见 Comparable),或者按照创建时所提供的比较器进行排序。线程不安全
特有方法
Object clone()返回 TreeMap 实例的浅表复制
Comparator<? super K> comparator()返回用于对此映射进行排序的比较器,如果此映射使用它的键的自然顺序,则返回 null
K firstKey()返回有序映射中当前第一个(最小的)键
SortedMap<K,V> headMap(K toKey)返回此映射的部分视图,其键严格小于 toKey
K lastKey()返回有序映射中当前最后一个(最大的)键
SortedMap<K,V> subMap(K fromKey, K toKey)返回此映射的部分视图,其键值从 fromKey(包括)到 toKey(不包括)
SortedMap<K,V> tailMap(K fromKey)返回映射的部分视图,其键大于或等于 fromKey
Collection<V> values()返回此 Map 中所包含的值的 collection 视图
Hashtable
此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null
对象都可以用作键或值,和hashMap的本质区别在于hashMap的键可以为null,值也可以为null,而Hashtable键值都必须是非空的,此类是线程安全的
虽然这个类已经被抛弃(和Vector的命运一样),但是它有个子类依然在使用:Properties
特有方法
和hashMap一样
遍历Map的方式
1、keySet()方式
public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "ms"); map.put(2, "grf"); map.put(3, "home"); Set<Integer> set = map.keySet(); //增强for for(Integer key : set){ String value = map.get(key); System.out.println(key + "---" + value); } //迭代器 Iterator<Integer> it = set.iterator(); while(it.hasNext()){ int key = it.next(); String value = map.get(key); System.out.println(key + "---" + value); } }
2、 entrySet()
public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "ms"); map.put(2, "grf"); map.put(3, "home"); Set<Entry<Integer, String>> entrySet = map.entrySet(); //增强for for(Entry<Integer, String> entry : entrySet){ int key = entry.getKey(); String value = entry.getValue(); System.out.println(key + "---" + value); } //迭代器 Iterator<Entry<Integer, String>> it = entrySet.iterator(); while(it.hasNext()){ Entry<Integer, String> entry = it.next(); int key = entry.getKey(); String value = entry.getValue(); System.out.println(key + "---" + value); } }