• Map接口和常用方法


    Map接口实现类的特点

    • Map 用于保存具有映射关系的数据 key-value
    • Map中的key和value可以是任何引用类型的数据 会封装到HashMap$Node对象中
    • Map的key不允许重复
    • Map的value可以重复
    • Map的key可以为null value也可以为null key为null只能有一个 value为null可以多个
    • 常用String类作为May的key
    • key和value之间存在单项一对一关系 即通过指定的key总能找到对应的value

    Map接口遍历方法

    • 通过map.keySet获取到set 通过增强for和迭代器获取
    • 通过 map.values()获取value 并通过Collection 增强for 迭代器获取value
    • 通过 map.entrySet() 获取到set 通过增强for迭代器获取 其中需要Map.Entry m=(Map.Entry)entry向下转型
    {
        public static void main(String[] args) {
            Map map = new HashMap();
            map.put("邓超",new Book("三国",100));
            map.put("邓超","孙俪"); //替换
            map.put("王宝强","马蓉");
            map.put("宋哲","马蓉");
            map.put("刘林波",null);
            map.put(null,"刘亦菲");
            map.put("鹿晗","关晓彤");
    
            //第一组 先取出所有key 通过key 取出对应的value
            //1 增强for
            System.out.println("=====第一种=======");
            Set keyset = map.keySet();
            for (Object obj :keyset) {
                System.out.println(obj+"-"+map.get(obj));
            }
    
            System.out.println("====第二种======");
    
            //2迭代器
            Iterator iterator = keyset.iterator();
            while (iterator.hasNext()){
                Object next = iterator.next();
                System.out.println(next+"-"+map.get(next));
            }
    
            System.out.println("=======第二组 第3种========");
            //这里可以使用所有的collections使用的遍历方法
            //1 增强for 只能遍历所有的value
            Collection values = map.values();
            for (Object o :values) {
                System.out.println(o);
            }
    
            System.out.println("=====第4种=====");
    
            //迭代器 所有的value
            Iterator iterator1 = values.iterator();
            while (iterator1.hasNext()){
                Object next2 = iterator1.next();
                System.out.println(next2);
            }
    
            System.out.println("=====第三组 增强for");
            //第三组 EntrySet
            Set entrySet = map.entrySet();
            for (Object entry :entrySet) {
                //将entry转成Map.Entry
                Map.Entry m=(Map.Entry)entry;
                System.out.println(m.getKey()+"-"+m.getValue());
            }
    
            System.out.println("========第三组 迭代器");
            Iterator iterator2 = entrySet.iterator();
            while (iterator2.hasNext()){
                Object next = iterator2.next();
                System.out.println(next);
            }
        }
    }
    
    • 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

    HashMap小结

    • Map接口的常用实现类 HashMap Hashtable Properties
    • HashMap是Map接口使用评率最高的实现类
    • HashMap是以 key-value对方式来存储数据
    • key不能重复 但是值可以重复 允许使用null键和null值
    • 如果添加相同key 则会覆盖原来的key-value 等同于修改(key不会替换 val会替换)
    • 与HashSet一样 不保证映射的顺序 因为底层是以hash表的方式来存储的
    • HashMap没有实现同步 因此线程是不安全的
  • 相关阅读:
    云原生系列 六【轻松入门容器基础操作】
    gd407使用dm9000通讯异常
    2023-08-23 AndroidR 自主研究出来的三手指下滑截屏功能
    ​​​​​​​3分钟实现EG网关串口连接麦格米特PLC
    【C++】map的使用
    [spark]排序
    ubuntu下更新vim至最新版本
    2-44 JQuery
    物联网AI MicroPython学习之语法 umqtt客户端
    VB.net下使用开源免费三维控件Anycad的应用实例分享
  • 原文地址:https://blog.csdn.net/keith32/article/details/125469153