Java学习笔记之集合类 (三) Map集合

不同于Collection集合,Map集合一次添加一对元素,所以也称为双列集合。map集合存储的是键值对,它必须保证键的唯一性。Map集合常用方法如下:

  1. 添加
    V put(K key, V value) //返回一个和前key关联的值,没有则返回null

  2. 删除
    void clear() //清空容器
    V remove(Object key) //如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

  3. 判断
    boolean containsKey(Object key) //如果此映射包含指定键的映射关系,则返回 true。
    boolean containsValue(Object value) // 如果此映射将一个或多个键映射到指定值,则返回 true。
    boolean isEmpty()

  4. 获取
    V get(Object key) // 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
    int size() //返回此映射中的键-值映射关系数。
    Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射关系的 Set 视图。
    Set< K > keySet() // 返回此映射中包含的键的 Set 视图。
    Collection values() //返回此映射中包含的值的 Collection 视图。

Map的遍历方式比较特殊,其中一种是首先通过keySet获取到所有key的集合,然后再通过这个集合用Map的get方法获取到值:

	HashMap<Integer, String> hm = new HashMap<>();
    hm.put(21, "张三");
    hm.put(22, "李四");
    hm.put(23, "王五");
    hm.put(24, "赵六");
    Set<Integer> set = hm.keySet();
    Iterator<Integer> it = set.iterator();
    while (it.hasNext()){
        Integer key = it.next();
        String str = hm.get(key);
        System.out.println(key + str);
    }

还有一种遍历方法,通过 Set<Map.Entry<K,V>> entrySet() 方法获得了一个包含了键值映射关系(Map.Entry<K,V>类型)的Set集合,再通过Map.Entry<K,V>的getKey和getValue方法获取到键值:

    HashMap<Integer, String> hm = new HashMap<>();
    hm.put(21, "张三");
    hm.put(22, "李四");
    hm.put(23, "王五");
    hm.put(24, "赵六");
    Set<Map.Entry<Integer, String>> set = hm.entrySet();
    Iterator<Map.Entry<Integer, String>> it = set.iterator();
    while (it.hasNext()){
        Map.Entry<Integer, String>  me = it.next();
        String str = me.getValue();
        int key = me.getKey();
        System.out.println(key + str);
    }

还有一种方法,通过values方法获得一个value的集合,再通过这个集合迭代所有value:

    HashMap<Integer, String> hm = new HashMap<>();
    hm.put(21, "张三");
    hm.put(22, "李四");
    hm.put(23, "王五");
    hm.put(24, "赵六");
    //Set<Map.Entry<Integer, String>> set = hm.entrySet();
    Collection<String> coll = hm.values();
    Iterator<String> it = coll.iterator();
    while (it.hasNext()){
        String str = it.next();
        System.out.println(str);
    }

Map集合中常见的实现类有:

  1. HashTable: 内部结构是哈希表,是线程同步的,它不允许null作为键值。
  2. HashMap:内部是哈希表,不是线程同步的,允许null作为键值。
  3. TreeMap:内部是二叉树,不是线程同步的,它可以对Map容器的元素根据键进行排序。
  4. LinkedHashMap:HashMap的子类,具有元素有序性(存入和取出顺序一致)

猜你喜欢

转载自blog.csdn.net/weixin_44965650/article/details/107013827