• 【Java集合类】之Map集合的特点及使用


    在这里插入图片描述


    在这里插入图片描述



    个人名片:

    🐼作者简介:一名大一在校生
    🐻‍❄️个人主页:小新爱学习.
    🐼个人WeChat:hmmwx53
    🕊️系列专栏:零基础学java ----- 重识c语言 ---- 计算机网络
    🐓每日一句:于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。



    Map

    1、Map集合概述和使用

    1.1 Map集合概述:

    java.util
    接口 Map
    类型参数:
    K - 此映射所维护的键的类型
    V - 映射值的类型

    public interface Map
    将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

    此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

    Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

    Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

    Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如
    HashMap 类。

    注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上
    equals 和 hashCode 方法的定义将不再是明确的。

    1.2 Map集合常用方法

    方法说明
    boolean equals(Object o)比较指定的对象与此映射是否相等。
    V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
    V put(K key, V value)将指定的值与此映射中的指定键关联(可选操作)。
    void clear()从此映射中移除所有映射关系(可选操作)。
    boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true。
    boolean containsValue(Object value)如果此映射将一个或多个键映射到指定值,则返回 true。
    boolean isEmpty()如果此映射未包含键-值映射关系,则返回 true。
    V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
    Set keySet()返回此映射中包含的键的 Set 视图。
    Set> entrySet()返回此映射中包含的映射关系的 Set 视图。
    代码示例:
    import java.util.*;
    
    public class CollectionsDemo {
    
       public static void main(String[] args) {
          Map m1 = new HashMap(); 
          m1.put("Zara", "8");
          m1.put("Mahnaz", "31");
          m1.put("Ayan", "12");
          m1.put("Daisy", "14");
          System.out.println();
          System.out.println(" Map Elements");
          System.out.print("\t" + m1);
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    package com.ithmm_01;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    
    public class MapDemo01 {
        public static void main(String[] args) {
            //创建集合对象
            Map<String,String> map = new HashMap<String,String>();
    
            //往集合添加元素
            map.put("2101","zhangxiaohau");
            map.put("2102","wangxiaoer");
            map.put("2103","liuyidao");
    
    
            //根据键删除对应元素
    //        System.out.println(map.remove("2102"));//wangxiaoer
    //        System.out.println(map.remove("2105"));//null
    
            //移除所有键值对元素
            //map.clear();//{}
    
            // boolean containsKey(Object key)
            //          如果此映射包含指定键的映射关系,则返回 true。
    
            System.out.println(map.containsKey("2101"));//true
            // boolean containsValue(Object value)
            //          如果此映射将一个或多个键映射到指定值,则返回 true。
            System.out.println(map.containsValue("liuyidao"));//true
    
            //boolean isEmpty() |如果此映射未包含键-值映射关系,则返回 true。
            System.out.println(map.isEmpty());//false
    
            System.out.println(map.size());//3
    
    //        V get(Object key)	返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
            System.out.println(map.get("2101"));//zhangxiaohau
    
            System.out.println(map.get("2102")); //wangxiaoer
    
    
    //        Set keySet()	返回此映射中包含的键的 Set 视图。
            System.out.println(map.keySet());//3[2103, 2102, 2101]
    
    //        Collection values()
    //        返回此映射中包含的值的 Collection 视图。
            Collection<String> values = map.values();
            for(String value : values){
                System.out.println(value);//liuyidao  wangxiaoer  zhangxiaohau
    
            }
            //输出集合对象
            System.out.println(map);//
    
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    总结:Map 接口中键和值一一映射. 可以通过键来获取值。

    • 给定一个键和一个值,你可以将该值存储在一个 Map 对象。之后,你可以通过键来访问对应的值。
    • 当访问的值不存在的时候,方法就会抛出一个 NoSuchElementException 异常。
    • 当对象的类型和 Map 里元素类型不兼容的时候,就会抛出一个 ClassCastException 异常。
    • 当在不允许使用 Null 对象的 Map 中使用 Null 对象,会抛出一个 NullPointerException 异常。
    • 当尝试修改一个只读的 Map 时,会抛出一个 UnsupportedOperationException 异常。

    1.3 Map集合的遍历

    方法一:

    操作:

    • 获取所有键的集合,用keySet()方法实现
    • 遍历键的集合,获取到每一个键,用增强for实现
    • 根据键去找值。用get(Object key)方法实现

    代码示例:

    package com.ithmm_01;
    /**
     *  - 获取所有键的集合,用keySet()方法实现
     *  - 遍历键的集合,获取到每一个键,用增强for实现
     *  - 根据键去找值。用get(Object key)方法实现
     */
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class MapDemo02 {
        public static void main(String[] args) {
            //创建集合对象
            Map<String, String> map = new HashMap<String, String>();
    
            //往集合添加元素
            map.put("2101", "zhangxiaohau");
            map.put("2102", "wangxiaoer");
            map.put("2103", "liuyidao");
    
            //获取所有键的集合,用keySet()方法实现
            Set<String> keySet = map.keySet();
    
            //遍历键的集合,获取到每一个键,用增强for实现
            for (String key :keySet){
                // 根据键去找值。用get(Object key)方法实现
                String value = map.get(key);
                System.out.println(key + "," +value);
            }
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    控制台输出:
    2103,liuyidao
    2102,wangxiaoer
    2101,zhangxiaohau

    方法二:

    操作:

    • 获取所有键值对对象的集合
      Set> entrySet()返回此映射中包含的映射关系的 Set 视图。
    • 遍历键值对对象的集合,得到每一个键值对对象
      用增强for实现,得到每一个Map.Entry
    • 根据键值对对象获取键和值
      用getKey()方法得到键
      用getValue()方法得到值
      代码示例:
    package com.ithmm_01;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class MapDemo03 {
        public static void main(String[] args) {
            //创建集合对象
            Map<String, String> map = new HashMap<String, String>();
    
            //往集合添加元素
            map.put("2101", "zhangxiaohau");
            map.put("2102", "wangxiaoer");
            map.put("2103", "liuyidao");
    
            //获取所有键值对对象的集合
            Set<Map.Entry<String, String>> entrySet = map.entrySet();
    
            //遍历键值对对象的集合,得到每一个键值对对象
            //用增强for实现,得到每一个Map.Entry
            for (Map.Entry<String, String> ss : entrySet) {
                //根据键值对对象获取键和值
                String key = ss.getKey();
                String value = ss.getValue();
    
                System.out.println(key + "," + value);
    
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    控制台输出:
    2103,liuyidao
    2102,wangxiaoer
    2101,zhangxiaohau


    在这里插入图片描述

    欢迎添加微信,加入我的核心小队,请备注来意

    👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

  • 相关阅读:
    卷积神经网络(CNN)简介
    Vue3:组件的生命周期函数
    . Flume面试题
    svm.SVC应用实践1--乳腺癌检测
    nginx启动报错纠正
    安塔利斯升级php8
    用python gdal裁剪栅格数据提取添加xy经纬度和栅格值
    R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果组合起来、使用labs函数为第二个子图添加标题信息
    Linux内存不够了?看看如何开启虚拟内存增加内存使用量
    浅析即时通讯开发中HTTP与WebSocket的关系
  • 原文地址:https://blog.csdn.net/m0_68089732/article/details/126540078