• 非零基础自学Java (老师:韩顺平) 第14章 集合 14.12 Map 接口和常用方法


    非零基础自学Java (老师:韩顺平)

    ✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】

    第14章 集合

    14.12 Map 接口和常用方法
    14.12.1 Map 接口实现类的特点

    JDK 8 的Map 接口特点

    • Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value
    • Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
    • Map中的key不允许重复,原因和HashSet一样,前面分析过源码.
    • Map中的 value可以重复
    • Map 的key 可以为null, value也可以为null,注意key为null, 只能有一个,value为null ,可以多个.
    • 常用String类作为Map的key
    • key 和 value之间存在单向一对一关系,即通过指定的key 总能找到对应的value

    【举个栗子】

    package com.dingjiaxiong.map_;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * ClassName: Map_
     * date: 2022/9/5 19:58
     *
     * @author DingJiaxiong
     */
    
    @SuppressWarnings({"all"})
    public class Map_ {
        public static void main(String[] args) {
            Map map = new HashMap();
    
            map.put("no1","韩老师"); // k - v
            map.put("no2","张无忌"); // k-v
    
            map.put("no1","张三丰"); //当出现相同的k , 则进行替换
    
            map.put("no3","张三丰");
            
            map.put(null,null);
    
            map.put(null,"abc");
            map.put("no4",null);
            map.put("no5",null);
            map.put(1,"赵敏");
            map.put(new Object(),"银角大王");
    
            System.out.println(map.get("no2")); //根据k 获取 v
    
            System.out.println("map = " + 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

    运行结果

    在这里插入图片描述

    在这里插入图片描述

    14.12.2 Map 接口常用方法
    package com.dingjiaxiong.map_;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * ClassName: MapMethod
     * date: 2022/9/5 20:03
     *
     * @author DingJiaxiong
     */
    
    @SuppressWarnings({"all"})
    public class MapMethod {
        public static void main(String[] args) {
    
            Map map = new HashMap();
    
            map.put("邓超",new Book("",100));
            map.put("邓超","孙俪");
    
            map.put("xxx","yyy");
            map.put("aaa",null);
            map.put(null,"ccc");
    
            System.out.println("map = " + map);
    
            // remove 根据键 删除映射关系
            map.remove(null);
            System.out.println("map = " + map);
    
            //get 根据键获取值
            System.out.println(map.get("aaa"));
    
            //size 获取元素个数
            System.out.println(map.size());
    
            //isEmpty 判断个数是否为0
            System.out.println(map.isEmpty()); //F
    
            //clear 清除k - v
            map.clear();
            System.out.println("map = " + map);
    
            //containsKey : 查找键是否存在
            System.out.println(map.containsKey("邓超"));//F
    
        }
    }
    
    class Book{
        private String name ;
        private int num;
    
        public Book(String name, int num) {
            this.name = name;
            this.num = num;
        }
    }
    
    • 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

    运行结果

    在这里插入图片描述

    14.12.3 Map 接口遍历方法

    【遍历原理图】

    在这里插入图片描述

    • containsKey:查找键是否存在
    • keySet:获取所有的键
    • entrySet:获取所有关系k-v
    • values:获取所有的值

    【举个栗子】

    package com.dingjiaxiong.map_;
    
    import java.util.*;
    
    /**
     * ClassName: MapFor
     * date: 2022/9/5 20:11
     *
     * @author DingJiaxiong
     */
    
    @SuppressWarnings({"all"})
    public class MapFor {
        public static void main(String[] args) {
    
            Map map = new HashMap();
            map.put("邓超","孙俪");
    
            map.put("xxx","yyy");
            map.put("aaa",null);
            map.put(null,"ccc");
    
            //1 先取出所有key,通过key取出对应的value
    
            Set keyset = map.keySet();
            //增强for
            System.out.println("======第一种方式=======");
            for (Object key : keyset){
                System.out.println(key + "-" + map.get(key));
            }
    
            //迭代器
            System.out.println("======第二种方式=======");
            Iterator iterator = keyset.iterator();
            while (iterator.hasNext()){
                Object key = iterator.next();
                System.out.println(key + "-" + map.get(key));
            }
    
            //2 把所有的values取出
            Collection values = map.values();
            //增强for
            System.out.println("---取出所有的 value 增强 for----");
            for (Object value : values){
                System.out.println(value);
            }
    
            //迭代器
            System.out.println("---取出所有的 value 迭代器----");
            Iterator iterator1 = values.iterator();
            while (iterator1.hasNext()){
                Object value = iterator1.next();
                System.out.println(value);
            }
    
            //3 通过 EntrySet 来获取 k- v
            Set entrySet = map.entrySet();
            //增强for
            System.out.println("----使用 EntrySet 的 for 增强----");
            for(Object entry : entrySet){
                //将entry 转为 Map.Entry
                Map.Entry m = (Map.Entry) entry;
                System.out.println(m.getKey() + "-" + m.getValue());
            }
    
            //迭代器
            System.out.println("----使用 EntrySet 的 迭代器----");
            Iterator iterator2 = entrySet.iterator();
            while (iterator2.hasNext()){
                Object entry = iterator2.next();
                Map.Entry m = (Map.Entry) entry;
                System.out.println(m.getKey() + "-" + m.getValue());
            }
        }
    }
    
    • 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
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    运行结果

    在这里插入图片描述

  • 相关阅读:
    电机模型预测控制算法
    SQL注入之order by注入与limit注入
    贷款借钱平台 小额贷款系统开发小额贷款源码 贷款平台开发搭建
    【算法题】LCP 50. 宝石补给
    【图像处理】用于图像分类的局部约束线性编码(Python代码实现)
    源码构建LAMP环境-2
    【虹科分享】不要使用Windows解决方案来保护Linux服务器
    [springmvc]mvc的多种方式实现请求转发与重定向
    编程语言常识
    RPA流程自动化的优势和好处
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126965125