Map集合体系——遍历,HashMap,TreeMap,LikedHashMap

news2025/1/24 11:34:54

 认识Map集合

 Map集合体系特点

方法

代码示例

package com.zz.Map;

import java.util.*;

public class Test {
    public static void main(String args[]){
        Map<String, Integer> map = new HashMap <>();//经典代码,按照键 无序 不重复 无索引
        map.put("手表", 100);
        map.put("手表", 134);//后面重复的数据会覆盖前面的数据(键)
        map.put("手机", 243);
        System.out.println(map);
        System.out.println("=====");

        Map<Integer, String> map1 = new TreeMap <>();//可排序,不重复,无索引
        map1.put(23, "java");
        map1.put(400, "cat");
        map1.put(35, "dog");
        System.out.println(map1);

        //2.public int size()获取集合的大小
        System.out.println(map.size());

        //3.public void clear()清空集合
        //map.clear();
        System.out.println(map);

        //4.public boolean isEmpty():判断集合是否为空,为空则返回true,反之
        System.out.println(map.isEmpty());

        //5.public V get(Object key)根据键获取对应值,不存在该键,则返回null
        int v1 = map.get("手表");
        System.out.println(v1);

        //6.public V remove(Object key)根据键删除整个元素(删除键会返回键的值)
        System.out.println(map.remove("手表"));
        System.out.println(map);

        //7.public boolean containsKey(Object key)判断是否包含某个键,为真返回true,否则返回false
        System.out.println(map.containsKey("手机"));//true
        System.out.println(map.containsKey("手表"));//false

        //8.public boolean containsValue(Object value):判断是否包含某个值
        System.out.println(map.containsValue(2));//false
        System.out.println(map.containsValue(243));//true

        //9.public Set<K> keySet():获取Map集合的全部键
       Set<String> keys = map.keySet();
       System.out.println(keys);

       //10.public Collection<V> values():获取Map集合的全部值
        Collection<Integer> values = map.values();
        System.out.println(values);

        //11.把其他Map集合的数据全部导入到自己的集合中来(扩展)
        Map<String, Integer> map2 = new HashMap <>();
        map2.put("java", 10);
        map2.put("操作系统", 20);
        Map<String, Integer> map3 = new HashMap <>();
        map3.put("数据库", 12);
        map3.put("计算机组成原理", 89);
        map2.putAll(map3);//putAll 把map3中的元素全部导入一份到map2集合中
        System.out.println(map2);
        System.out.println(map3);
    }
}

遍历

方式一:键找值 

package com.zz.Map.Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test2 {
    public static void main(String args[]){
        //准备一个Map集合
        Map<String, Double> map = new HashMap<>();
        map.put("牛魔王", 187.4);
        map.put("铁扇公主", 170.4);
        map.put("孙悟空", 156.7);
        map.put("唐僧", 179.4);
        System.out.println(map);
        //获取所有键
        Set<String> keys = map.keySet();
        System.out.println(keys);
        //根据键获取对应值
        for(String key : keys){
            double value = map.get(key);
            System.out.println(key + "=>" + value);
        }
    }
}

方式二:键值对

 

 //2.调用Map集合提供entrySet方法,把Map集合转换成键值对类型的Set集合
        Set<Map.Entry<String, Double>> entries = map.entrySet();
        for(Map.Entry<String, Double> entry : entries){
            String key = entry.getKey();
            double value = entry.getValue();
            System.out.println(key + "=>" + value);
        }

方式三:Lambda(推荐)JDK8才开始有

 //方式三Lambda遍历
        map.forEach((k, v)->{
            System.out.println(k + "->" + v);
        });
上面Lambda的原本代码形式 
 map.forEach(new BiConsumer <String, Double>() {
            @Override
            public void accept(String k, Double v) {
                System.out.println(k + "=>" + v);
            }
        });

Map集合案例

 Map集合投票统计代码示例

package com.zz.Map.vote;

import java.util.*;

public class Test {
    public static void main(String args[]){
        //1.将80个学生选择的景点数据拿到程序中来
        List<String> data = new ArrayList <>();
        String[] selects = {"A", "B", "C", "D"};
        Random r = new Random();
        for(int i = 1; i <= 80; i++){
            //每次模拟一个学生选择一个景点,存入到集合中去
            int index = r.nextInt(4);//0,1,2,3
            data.add(selects[index]);
        }
        System.out.println(data);

        //2.开始统计每个景点的投票人数
        //准备一个Map集合用于统计最终的结果
        Map<String, Integer> result = new HashMap<>();

        //3.开始遍历学生选择的景点数据
        for (String s : data){
            //判断该Map集合中是否存在该景点
            if(result.containsKey(s)){
                //说明这个景点之前统计过,其值+1,存入到Map集合中
                result.put(s, result.get(s) + 1);
            }else{
                //说明这个景点未被统计过,存入(景点=1)
                result.put(s, 1);
            }
        }
        System.out.println(result);
    }
}

HashMap

根据键的哈希值计算位置,和值无关

 

LinkedHashMap集合

将键:值封装成entry对象

TreeMap集合

集合的嵌套

一个集合中嵌套另外一个集合

package com.zz.Map.province;

import java.util.*;

public class Test {
    public static void main(String args[]){
        //1.定义一个Map集合存储全部的省份信息,其对应的城市信息
        Map<String, List<String>> map = new HashMap<>();

        List<String> cities1 = new ArrayList <>();
        Collections.addAll(cities1, "南京市", "苏州市", "扬州市");
        map.put("江苏省", cities1);

        List<String> cities2 = new ArrayList <>();
        Collections.addAll(cities2, "抚州市", "南昌市", "九江市");
        map.put("江西省", cities2);

        System.out.println(map);

        //获取对应省份的城市信息
        List<String> list = map.get("江西省");
        for (String city : list) {
            System.out.println(city);
        }

        //获取所有省份对应的城市信息
        map.forEach((p, c)->{
            System.out.println(p + "=>" + c);
        });
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android岗大厂面试官常问的那些问题,2024年Android者未来的出路在哪里

前言 伟人曾经说过&#xff1a; 书是人类进步的阶梯 书中自有黄金屋&#xff0c;书中自有颜如玉 读书破万卷&#xff0c;下笔如有神 书是唯一不死的东西。 书籍是伟大的天才留给人类的遗产。 最近有很多朋友在我的公众号上提问“Android开发的经典入门教材和学习路线&#xff…

机械臂中TCP配置

红色、绿色、蓝色箭头分别代表x、y、z三个方向

Swing程序设计(11)动作事件监听器,焦点事件监听器

文章目录 前言一、事件监听器是什么&#xff1f;二、详细展开 1.动作事件监听器2.焦点事件监听器总结 前言 如果你是坚持从Swing程序第一篇看到了这里&#xff0c;恭喜你&#xff0c;Swing程序设计简单地落下了帷幕&#xff0c;关于Swing程序更深的了解&#xff0c;可以自行学习…

MySQL下实现纯SQL语句的递归查询

需求 有一个部门表&#xff0c;部门表中有一个字段用于定义它的父部门&#xff1b; 在实际业务中有一个『部门中心』的业务&#xff1b; 比如采购单&#xff0c;我们需要显示本部门及子部门的采购单显示出来。 结构 数据如下&#xff1a; 实现方式如下&#xff1a; WITH RECUR…

实验笔记之——Gaussian Splatting SLAM配置与测试

之前博客对基于3DGS的SLAM进行了调研 学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研_3d gaussian splatting slam-CSDN博客文章浏览阅读3.2k次&#xff0c;点赞40次&#xff0c;收藏58次。论文主页3D Gaussian Splatting是最近NeRF方面的突破性工作&a…

OBS插件开发(二)推流实时曲线

不发视频了&#xff0c;截个图算了&#xff0c;嫌麻烦 1&#xff0c;自定义QWidget图表绘制 &#xff0c;动态更新 2&#xff0c;OBS直播帧率&#xff0c;码率监控 3&#xff0c;主要用于前端推流状况可视化&#xff0c;异常报警&#xff0c;及时性&#xff0c;无人值守直播

springcloud:3.6测试信号量隔离

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http://t…

如何制作一个简单html网页

要制作一个简单的HTML网页&#xff0c;可以按照以下步骤进行&#xff1a; 创建一个新的文本文件并将其保存为.html文件&#xff08;例如&#xff0c;index.html&#xff09;。 打开文本文件&#xff0c;并使用以下基本的HTML结构开始编写代码&#xff1a; <!DOCTYPE html…

HplusAdmin ASP.NET基本权限管理系统

HplusAdmin 介绍 一套ASP.NET WebForm(不用控件) hplusasp.netsqlserver 基本权限管理系统 http://hplus.baocaige.top 暂不开源&#xff0c;需要的滴滴或者留下邮箱&#xff01;&#xff01;&#xff01; 账号 普通账号 账号&#xff1a;user 密码&#xff1a;Aa123456普…

土地利用数据分类过程教学/土地利用分类/遥感解译/土地利用获取来源介绍/地理数据获取

本篇主要介绍如何对影像数据进行分类解译&#xff0c;及过程教学&#xff0c;示例数据下载链接&#xff1a;数据下载链接 一、背景介绍 土地是人类赖以生存与发展的重要资源和物质保障&#xff0c;在“人口&#xff0d;资源&#xff0d;环境&#xff0d;发展&#x…

Linux 之三:CentOS7 目录结构 和 日期及时区设置

Linux 目录 以下是对这些目录的解释&#xff1a; /bin&#xff1a;bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot&#xff1a; 这里存放的是启动Linux时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。/dev &#xff1a; dev是Device(设备)的缩写…

Git快速上手二

对Git命令的深入理解快速上手Git&#xff08;包含提交至GitHub和Gitee&#xff09;-CSDN博客 1.5 分支操作 1.5.1 分支原理 系统上线后,又要修改bug,又要开发新的功能。 由于新功能没有开发完,所以需要建立分支,一边修改bug,一边开发新功能,最终合并. 1.5.2 分支实操 创建…

React 的入门介绍

React 是什么 React是一个用于构建用户界面的JavaScript库。它由Facebook开发&#xff0c;并于2013年首次发布。React将用户界面拆分为小的可重用组件&#xff0c;每个组件都有自己的状态&#xff0c;并根据状态的变化来更新界面。 React使用了虚拟DOM&#xff08;Virtual DO…

[ISP]DCT离散余弦变换及C++代码demo

1.基本定义 离散余弦变换(DCT for Discrete Cosine Transform) DCT&#xff08;Discrete Cosine Transform&#xff0c;离散余弦变换&#xff09;是一种常用的信号处理技术&#xff0c;广泛应用于图像处理、音频处理、视频压缩等领域。DCT将一个信号或数据序列从时域&#xf…

最新JVM面试题(持续更新)

JVM 1 为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c;到处运行 JVM可以运行Class文件 2 JDK&#xff0c;JRE以及JVM的关系 3 我们的编译器到底干了什么事&#xff1f; 仅仅是将我们的 .java 文件转换成了 .c…

数据库系列之:什么是 SAP HANA?

数据库系列之&#xff1a;什么是 SAP HANA&#xff1f; 一、什么是 SAP HANA&#xff1f;二、什么是内存数据库&#xff1f;三、SAP HANA 有多快&#xff1f;四、SAP HANA 的十大优势五、SAP HANA 架构六、数据库设计七、数据库管理八、应用开发九、高级分析十、数据虚拟化 一、…

原生IP是什么?如何获取海外原生IP?

一、什么是原生IP 原生IP地址是互联网服务提供商&#xff08;ISP&#xff09;直接分配给用户的真实IP地址&#xff0c;无需代理或转发。这类IP的注册国家与IP所在服务器的注册地相符。这种IP地址直接与用户的设备或网络关联&#xff0c;不会被任何中间服务器或代理转发或隐藏。…

后台组件-语言包

<groupId>org.qlm</groupId><artifactId>qlm-language</artifactId><version>1.0-SNAPSHOT</version> 平台提供多语言支持&#xff0c;以上为语言包&#xff0c;提供后台多语言支持。首批实现&#xff1a; public class LanguageConstan…

【深度学习笔记】优化算法——梯度下降

梯度下降 &#x1f3f7;sec_gd 尽管梯度下降&#xff08;gradient descent&#xff09;很少直接用于深度学习&#xff0c; 但了解它是理解下一节随机梯度下降算法的关键。 例如&#xff0c;由于学习率过大&#xff0c;优化问题可能会发散&#xff0c;这种现象早已在梯度下降中…

@RequestBody

目录 概述 深入细节 案例 RequestBody与前端传过来的json数据的匹配规则 指定模型中的属性对应什么key 用Valid校验RequestBody的参数 根据RequestBody的内容来区分使用哪个资源 概述 RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)而最常…