Map集合的使用

Java基础:Map集合 Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection中的集合称为单列集合,Map中的集合称为双列集合。需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 阅读详情

Map

Map的基本操作:

@Test
public void e1(){
    //建立Map集合
    Map<String,Integer> map = new HashMap<>();
    //建立键值对
    map.put("语文",50);
    map.put("数学",50);
    map.put("英语",50);
    System.out.println("此时map长度为:"+map.size());
    //通过key取访问value
    System.out.println(map.get("语文"));
    //判断某一个key是否在map里面,
    System.out.println(map.containsKey("数学"));
    System.out.println(map.containsKey("生物"));
    //判断某一个value是否在map里面
    int a=54;
    System.out.println(map.containsValue(a));
    System.out.println(map.containsValue(50));
    //通过关键字删除对应的键值对
    map.remove("数学");
    System.out.println("删除数学以后");
    //遍历map集合
    map.forEach((key,value)->{
        System.out.println(key+value);
    });
    //清空map集合
    map.clear();
    //访问长度
    System.out.println("清空以后的map长度为:"+map.size());
}

如何遍历map集合
三种方式
第一种:通过获得所有的键,然后用for循环去遍历集合(通过获取值)
第二种:entrySet方式遍历集合,同遍历所有的key-------->value对
第三种:java新增的forEacg方法传入一个BigConsummer对象,同时遍历Key , value
(Jack雷神的哦)

@Test
public void m2(){
    Map<String,Integer> map = new HashMap<>();
    /**
     * 向map集合里面添加键值对
     * put方法
     */
    map.put("语文",80);
    map.put("数学",91);
    map.put("英语",90);
    System.out.println("----------------------第一种方式遍历集合--------------------------");
   Set<String>  keys = map.keySet();  //keySet方法获取map集合中所有的键的集合
   for(String str:keys){
       System.out.println("当前拿到的Value是:"+map.get(str));
   }
    System.out.println("----------------------第二种方式遍历集合--------------------------");
    Set<Map.Entry<String,Integer>> ss =map.entrySet();
   /* for(Map.Entry<String,Integer> en:ss){
        System.out.println("当前遍历的键是:"+en.getKey());
        System.out.println("当前遍历的value是:"+en.getValue());
    }*/
    Iterator<Map.Entry<String,Integer>> iterator = ss.iterator();

    while(iterator.hasNext()){
        Map.Entry<String,Integer> en = iterator.next();
        System.out.println("当前遍历的键是:"+en.getKey());
        System.out.println("当前遍历的value是:"+en.getValue());

    }
    System.out.println("----------------------第三种方式遍历集合--------------------------");
    map.forEach((key,value)->{
        System.out.println("当前遍历的键值对是:"+key+","+value);
    });
}

第四种遍历map集合的方法--------迭代方法


//迭代方式遍历map集合,也用到Entry
    @Test
    public void e3(){
        Map<String,Integer> map = new HashMap();
        //建立键值对
        map.put("语文",67);
        map.put("数学",22);
        map.put("英语",33);
        Set<Map.Entry<String,Integer>> ss = map.entrySet();
        //先得到迭代对象
        Iterator<Map.Entry<String,Integer>> iterator = ss.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

运行结果:
在这里插入图片描述

/**

  • HashMap的存储原理:
  • hashMap第一次向集合里面添加键值对的时候,首先会将key的值进行做hash算法,算出对应的hashCode
  • 把相应的value存储对应的hash地址
  • 当hashMap集合第二次添加键值对的时候,同样也会将key进行hash运算,算出对应的hashCode,这是会将
  • 当前算出的hashCode于hashMap集合里面的所有HashCode值进行比较,如果发现HashCode值不一样,则HashMap
  • 集合会把当前的key-value对添加到map集合;如果发现本次算出的hashCode和集合里面的任何hashCode相同,
  • 则此时回去比较equals方法,如果equal方法返回true,则会覆盖集合里面对应的可以相同value,如果返回
  • false,此时HashMap集合也会将key-value加入到集合中(但是这中情况是不允许出现的,因为存储的时候会形成链表
  • 大大影响hashMap的性能)。
    /
    /
    *
  • Hashtable 和 hashMap 提供的API完全一样
  • 不同的地方是HashTable是jdk1.0提供的 HashMAP是1.5提供的
  • hashTable线程安全 HashMap线程不安全
  • hashTable的key不能为null,value不能为null 而HashMap可以为null
    */
    /Hashtable map1 = new Hashtable();
    map1.put(“ss”,null);
    /

补充

@Test
public void e_1(){
    //建立Map集合
    Map<String,Integer> map = new HashMap<>();
    //建立键值对
    map.put("语文",51);
    map.put("数学",50);
    map.put("英语",52);
    System.out.println("----------------------改变前------------------");
    System.out.println(map.get("数学"));//565
    map.forEach((a,b)->{
        System.out.println(a+"="+b);
    });
    System.out.println("----------------------改变后------------------");
    //通过key改变value值
    if(map.containsKey("数学")){
        map.put("数学", 100);}

    //通过value改变key值
    if(map.containsValue(50)){
        map.put("物理", 50);}
    map.forEach((a,b)->{
        System.out.println(a+"="+b);
    });
}

运行结果
在这里插入图片描述

作业求利用map形式求语数外成绩的和

@Test
public void e2(){
    Map<String,Integer> map = new HashMap<>();
    //建立键值对
    map.put("语文",67);
    map.put("数学",22);
    map.put("英语",33);
    System.out.println("--------------第一种遍历方式-----------");
    Set<String> keys=map.keySet();//keySet()方法可以得到map里面所有的键
    System.out.println();
    System.out.println("keys所存在的格式是:"+keys);
    //现在我想要通过以上方法遍历时输出-----> key,value的形式
    //现在将keys转化成数组
    Object[] obj=keys.toArray();
    int i=-1;
    int sum=0;
    System.out.println("遍历的成绩是:");
    for(Object o:keys){
        i++;
        sum=sum+map.get(o);
        System.out.println(obj[i]+","+map.get(o));
    }
    System.out.println("总成绩为:"+sum);

    System.out.println("---------第二种遍历方式--------------");
    Set<Map.Entry<String,Integer>> ss=map.entrySet();
    int sum1=0;
    for (Map.Entry<String,Integer> ee:ss){
        sum1+=ee.getValue();
        System.out.println(ee.getKey()+" "+ee.getValue());
    }
    System.out.println(sum1);

    System.out.println("---------第三种遍历方式--------------");
    int sum2=0;
    //.forEach方式哦,很好
    map.forEach((e,o)->{
        System.out.println(e+" "+o);
    });
}
List、Set、Map集合的简单使用 List继承于Collection接口,是一个有序的Collection。List中允许有重复的元素,实现List接口的常用类有 LinkedList、ArrayList、Vector等。//向集合中添加数据listTest.add("千锋北京");listTest.add("千锋成都");listTest.add("千锋武汉");listTest.add(1, "千锋杭州");Set也实现自Collection接口,Set中的值不能重复。 阅读详情

相关推荐

java 遍历Map及Map转化为二维数组的实例

主要介绍了java 遍历Map及Map转化为二维数组的实例的相关资料,希望通过本文能帮助到大家,实现这样的功能,需要的朋友可以参考下

集合Map创建及方法

1.Map集合创建 import java.util.HashMap; import java.util.Map; public class Fire { public static void main(String[] args) { Map<String,Integer> nums=new HashMap<>(); } }...

SignalFire的博客 7671

[WeChatMsg]导出csv格式微信聊天记录的手把手教程

手把手教大家如何导出自己的聊天记录得到csv文件,即使是电脑小白也可以轻松学会o(* ̄▽ ̄*)ブ

weixin_51094633的博客 1万+

Java——Map集合

Java——Map集合详述

程序员阿龙的博客 2797

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 388

手把手教你用VSCode+MCUXpresso搭建i.MX RT1062开发环境(附RT-Thread Nano移植)

本文详细介绍了如何使用VSCode和MCUXpresso工具链搭建i.MX RT1062开发环境,包括工具链安装、工程配置、调试技巧以及RT-Thread Nano实时操作系统的移植方法。通过实战步骤和优化建议,帮助开发者快速掌握这款高性能Cortex-M7 MCU的开发流程,提升嵌入式开发效率。

weixin_27014595的博客 392

Java学习日记:Map集合

Java学习日记:Map集合

kxbb99的博客 703

无人机室内悬停如何稳?光流与IMU数据融合实战解析

在无GPS的室内环境中,无人机自主悬停依赖多传感器融合,其中光流与IMU是核心组合。光流传感器通过图像像素位移估算相对地面的速度,长期无漂移,但易受光照和纹理影响;IMU高频响应出色,却存在积分累积漂移。两者在频率与误差特性上天然互补,融合后可实现高精度位置估计。工程实践中,需合理选型、正确处理坐标变换与时间对齐,并通过互补滤波或扩展卡尔曼滤波将光流速度修正引入状态估计,进而支撑位置环与速度环控制。这一技术不仅解决室内定点悬停,也为视觉惯性里程计等更复杂的自主定位提供基础。本文结合真实调试案例,梳理从硬件安

weixin_33314040的博客 293

如何创建Map集合?

TreeMap。

破损的天堂鸟博客 1407

实验吧 损坏的U盘镜像

        从网站上可以下载一个CTF.hdd的文件,使用winHex打开,可以知道这是一个exFAT格式的文件。        用binwalk检查一下,发现文件中包含两个zip文件,使用foremost进行提取。一个压缩包需要密码解压缩,另一个解压后发现Password.txt文件。说明另一个压缩包的密码与checksum有关。        通过查看exFAT文件系统格式可以得知如何计算...

xingyyn78的博客 3512

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

beyond951的博客 7333

集合Map的使用

1、Map集合是一个双列集合。Map是双列集合的顶层接口,它的功能所有双列集合都可以继承使用。2、Map集合中储存的是键值对“ key = value ”,键和值是一一对应。其中键不能重复,值可以重复。interface Map<K,V> K:键的类型;V:值的类型3、Map集合特点:①键值对映射关系②一个键对应一个值③键不能重复,值可以重复④元素存取无序4、应用场景:需储存一一对应的数据时,可以考虑使用map集合。

m0_65062804的博客 975

虚幻UE 增强输入-触发器

输入触发器(UInputTrigger): 使用经过修饰器修改的输入值,或者使用其他输入动作的输出值,来确定是否激活输入动作。

UE成长之路,欢迎大家的关注! 5464

Map集合与List集合的使用的深入总结

Map集合与List集合的使用的深入总结(一)Map集合

K_天道酬勤 2735

激光可燃气体传感器DIY指南:从TDLAS原理到STM32实战(附代码)

本文详细介绍了如何DIY激光可燃气体传感器,从TDLAS原理到STM32实战,包括硬件选型、光路搭建、电子系统设计和嵌入式软件开发。通过TDLAS技术实现高灵敏度甲烷检测,适合工业安全和环境监测应用。附有完整代码和实用调试技巧,帮助开发者快速掌握光学气体检测技术。

fanta的博客 440

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Map集合的使用与详解

例如,如果我们声明一个Map类型的变量,那么这个Map集合只能存储键为String类型、值为Integer类型的元素,任何类型不匹配的操作都将在编译时被检测到,避免在运行时出现类型转换错误。1.Java中的集合都支持泛型,泛型的作用是指定集合中要存储的元素类型,通过使用泛型可以保证集合中只能存储指定类型的元素,避免了类型转换带来的风险和错误,增加了代码的可读性、可维护性和代码的安全性。总的来说,Java中的泛型为集合的类型安全性提供了支持,并提高了代码的可读性和可维护性。

m0_74018330的博客 1991

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java中Map集合的使用

List:存储单列数据的集合,存储的数据是有序并且是可以重复的 Map:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复 1:声明一个Map Map<String,Object> map = new HashMap<String,Object>(); map.put(key,va...

zhang1409399037的博客 2304

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java Map集合的使用

Map集合概述 Map集合分类 单列集合 单列集合一次存储一个元素 双列集合 双列集合一次添加两个元素(一对数据) Map集合总结 Interface Map<K, V> K:键的数据类型,V:值的数据类型 键不能重复,值可以重复 键和值一一对应,每一个键只能找到自己对应的值 (键+值)这个整体 称为 “键值对”,或 “键值对” 对象,在 Java 中称为 “Entry” 对象 举例说明:学生的学号和姓名 20001 -> 张三 2002 -> 李四 2003

cmy_top的博客 285

Map集合使用

Map集合的基本使用 Map集合:存储key-value键值映射关系。                K表示key对象                V表示value对象   Map集合的基本方法: 添加元素:put(K  key, V value)           在使用put存储一对元素(key-value)对象时,会先拿key去判断Map集合中是否已经存在。       

逆熵架构 2658

关于代码中Map集合的使用

       场景:需要将一个对象数据通过传参的形式访问另一个方法,并且该对象需要在之前组装成一个Map&lt;String,Object&gt; 的格式。       用到map集合的功能:Map.entry。       定义一个 商品的缓存Map:                                Map&lt;String,Object&gt; goodsCache=new H...

u013702409的专栏 1558

Java笔记——【Map集合使用】

【Map】 主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用”键找值”的方式遍历Map集合 使用”键值对”的方式遍历Map集合 能够使用HashMap存储自定义键值对的数据 能够使用HashMap编写斗地主洗牌发牌案例 第一章 Map集合 1.1 概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.uti

寅贝勒的博客 4288

【Map集合的使用】

package com.yjf.esupplier.common.test; import java.util.HashMap; import java.util.Map; /** * @author shusheng * @description Map集合的使用 * @Email shusheng@yiji.com * @date 2018/12/17 16:...

weixin_30457465的博客 102

Map集合以及Map集合的实现类&Stream流的使用

Map 遍历Map集合 //方法一 //获得所有的键的Set集合 Set<Object> set = map.ketSet(); for(Object key : set){ //根据具体的键获得具体的值 Object value = map.get(key); } //方法二 //获得所有的键值对对象集合 Set<Map.Entry<Object, Object>> entrySet = map.entrySet(); for(Map.Entry<

Menfolk_k的博客 2729

【前端】js Map集合的使用方法

JavaScript 的 Map 是一种灵活的键值对存储结构,支持任意数据类型作为键并保持插入顺序。主要用法包括:通过 new Map() 创建,使用 set()/get() 添加/获取值,has()/delete() 检查/删除键值,clear() 清空,以及通过 size 获取条目数。Map 支持多种遍历方式(forEach、for...of),并可与数组/对象相互转换。其核心优势在于允许非字符串键、保持顺序和优化增删性能,适用于需要复杂键映射或频繁数据操作的场景。

qq_45974648的博客 611
上一篇: Java集合框架——List的排序方式以及队列测试Queue
下一篇: 正则表达式
惠溪崽崽
博客等级 码龄7年 4粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值