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);
    }
}
原文地址:https://www.cnblogs.com/ms-grf/p/7259774.html