zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    MVC学习笔记(六)---遇到的小问题汇总
    C# 手写将对象转换为Json方法
    C# 使用SuperSocket
    C#生成/调用动态链接库
    Winform串口编程---接收数据demo(VSPD虚拟串口)
    js获取浏览器内核判断终端(是QQ打开还是QQ浏览器打开)
    工具函数(获取url , 时间格式化,随机数)
    node和npm的安装和镜像源的修改
    atom常用插件
    查看并关闭端口号
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7259774.html
Copyright © 2011-2022 走看看