Java中Map集合体系{HashMap,TreeMap,LindedHashMap}

news2024/9/24 19:17:20

Map概述

Map是双列集合,Map集合中的每一个元素是以key=value的形式存在的,一个key=value就称之为一个键值对,而且在Java中有一个类叫Entry类,Entry的对象用来表示键值对对象。

特点:键不能重复,值可以重复,每一个键只能找到自己对应的值。

Map集合也有很多种,在Java中使用不同的类来表示的,每一种Map集合其键的特点是有些差异的,值是键的一个附属值,所以我们只关注键的特点就可以了。

package com.itcast.prepare;

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

public class Demo11 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();//有序,不重复,无索引;
        map.put("java", 15000);
        map.put("java", 10000);//后面重复的会覆盖前面的数据(键)
        map.put("python", 12000);
        map.put("goLang",20000);
        map.put("php", 8000);
        map.put("mull",null);
        System.out.println(map);

        Map<Integer,String> map1 = new HashMap<>();//可排序,不重复,无索引;
        map1.put(23,"java");
        map1.put(29,"goLang");
        map1.put(35,"java");
        map1.put(23,"php");
        map1.put(18,"python");
        System.out.println(map1);


    }
}

Map集合的特点

Map集合系列都是由键决定的,值只是一个附属值,值不做要求;

  • HashMap:由键决定特点,无序,不重复,无索引;(用的较多)
  • LinkedHashMap:由键决定特点,有序,不重复,无索引。
  • TreeMap:由键决定特点,按照大小默认升序排列、不重复,无索引;

Map集合的常用方法

package com.itcast.prepare;

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

public class Demo12 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        //添加元素
        map.put("华为",2500);
        map.put("苹果",15000);
        map.put("锤子",1500);
        map.put("小米",3500);
        map.put("1+",1800);
        map.put("vovi",1500);
        map.put("红米",1500);
        map.put("OPPO",1600);
        map.put("华为",2500);
        System.out.println(map);
        //获取集合的长度
        System.out.println(map.size());
        //清空集合
//        map.clear();
        //判断集合是否为空,空返回true
        System.out.println(map.isEmpty());
        //根据键获取对应值
        System.out.println(map.get("华为"));
        //根据键删除整个元素
        System.out.println(map.remove("华为"));
        //判断是否包含某个键
        System.out.println(map.containsKey("华为"));
        //判断是否包含某个值
        System.out.println(map.containsValue(2500));
        //获取全部键的值
        Set<String> set = map.keySet();
        System.out.println(set);
        //获取map集合的全部值
        Collection<Integer> values = map.values();
        System.out.println(values);

    }
}

 把一个Map集合添加到另一个Map集合中

   // 11.把其他Map集合的数据倒入到自己集合中来。
        Map<String, Integer> map1 = new HashMap<>();
        map1.put("java1",  10);
        map1.put("java2",  20);
        Map<String, Integer> map2 = new HashMap<>();
        map2.put("java3",  10);
        map2.put("java2",  222);
        map1.putAll(map2); // putAll:把map2集合中的元素全部倒入一份到map1集合中去。
        System.out.println(map1);
        System.out.println(map2);

Map集合遍历

  1. 先遍历集合的所有键的值,在遍历集合的所有values

         用到方法:keyset(),get(key)



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

public class Demo13 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        //添加元素
        map.put("华为",2500);
        map.put("苹果",15000);
        map.put("锤子",1500);
        map.put("小米",3500);
        map.put("1+",1800);
        map.put("vovi",1500);
        map.put("红米",1500);
        map.put("OPPO",1600);
        map.put("华为",2500);

        System.out.println(map);
        //先得到所有键
        Set<String> key = map.keySet();
        System.out.println(key);
        //遍历所有的键
        for (String keys : key){
            Integer vlues = map.get(keys);//获得每一个键对应的值
            System.out.println(keys + "--------->" + vlues);
        }

    }
}

2. Entry对象遍历 

Map集合的第二种方式,是直接获取每一个Entry对象,把Entry存储扫Set集合中去,再通过Entry对象获取键和值。

调用Map集合的entrySet方法,将Map转换成Set集合



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

public class Demo13 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        //添加元素
        map.put("华为",2500);
        map.put("苹果",15000);
        map.put("锤子",1500);
        map.put("小米",3500);
        map.put("1+",1800);
        map.put("vovi",1500);
        map.put("红米",1500);
        map.put("OPPO",1600);
        map.put("华为",2500);

        System.out.println(map);
                

        //调用Map集合的entrySet方法,将Map转换成Set集合

        Set<Map.Entry<String, Integer>> set = map.entrySet();
        for (Map.Entry<String, Integer> stringIntegerEntry : set) {
            System.out.println(stringIntegerEntry);
        }

    }
}

3.foreach搭配lambda(JDK8之后的新特性)

        map.forEach(new BiConsumer<String, Integer>() {//匿名内部类
            @Override
            public void accept(String k, Integer v) {
                System.out.println(k + "----->" + v);
            }
        });
        //Lambda表达式
        map.forEach((k,v) -> System.out.println(k + "----->" + v));

    }
}

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

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

相关文章

安卓图形显示系统

Android图形显示系统 Android图形显示系统是Android比较重要的一个子系统&#xff0c;和很多其他子系统的关联紧密。 Android图形系统比较复杂&#xff0c;这里我们从整体上理一遍&#xff0c;细节留待后期再去深入。Android图形系统主要包括以下几个方面&#xff1a; - 渲染…

升级Qt后VS项目不能使用

错误场景&#xff1a; 如果你的QT卸载了装了新版,那么VS你原来设置的项目就不能跑了. 问题 升级Qt后&#xff36;&#xff33;项目不能使用 跟我一起开始挽救自己的项目 升级Qt后&#xff36;&#xff33;项目不能使用 假如你从5.14.6 升级到 Qt6.2并删除了原来的QT 你在VS里…

基础论文学习(3)——SwinTransformer

目前Transformer应用到图像领域的挑战&#xff1a; 图像分辨率高&#xff0c;像素点多&#xff0c;如果需要更多特征就必须构建很长的序列&#xff0c;但Transformer基于全局自注意力的计算导致计算量较大&#xff0c;能否用窗口分层的形式代替长序列&#xff0c;实现类似CNN感…

Php“牵手”淘宝商品详情页数据采集方法,淘宝API接口申请指南

淘宝天猫详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在电商平台的开发中&#xff0c;详情接口API是非常常用的 API&#xff0c;因此本文将详细介绍详情接口 API 的使用。 一、…

C语言,Linux,静态库编写方法,makefile与shell脚本的关系。

静态库编写&#xff1a; 编写.o文件gcc -c(小写) seqlist.c(需要和头文件、main.c文件在同一文件目录下) libs.a->去掉lib与.a剩下的为库的名称‘s’。 -ls是指库名为s。 -L库的路径。 makefile文件编写&#xff1a; CFLAGS-Wall -O2 -g -I ./inc/ LDFLAGS-L./lib/ -l…

华为开源自研AI框架昇思MindSpore应用案例:PFLD实时人脸关键点检测算法

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、案例实现 人脸关键点检测是一个非常核心的算法业务&#xff0c;其在许多场景中都有应用。比如我们常用的换脸、换妆、人脸识别等2C APP中的功能&#xff0c;都需要先进行人脸关键点的检测&#xff0c;然…

Python随机密码生成。编写程序,在26个字母大小写和10个数字随机生成10个8位密码。

题目&#xff1a;随机密码生成。编写程序&#xff0c;在26个字母大小写和10个数字随机生成10个8位密码。 样例&#xff1a;类似AB12cdHi的十组8位密码。 代码&#xff1a; import random def passwords():a, b, c ord(a), ord(A), ord(1)r list(range(a , a 26)) list(ra…

Comparable和Comparator区别

Comparable和Comparator接口都是实现集合中元素的比较、排序的&#xff0c;众所周知&#xff0c;诸如Integer&#xff0c;double等基本数据类型&#xff0c;java可以对他们进行比较&#xff0c;而对于类的比较&#xff0c;需要人工定义比较用到的字段比较逻辑。总体来讲&#x…

电脑找不到vcruntime140.dll文件怎么解决?教你解决这个问题

​vcruntime140.dll是Microsoft Visual C 2015 Redistributable Package中的一个文件&#xff0c;它包含了运行C应用程序所需的运行时库。如果在计算机上找不到这个文件&#xff0c;可能会导致一些应用程序无法正常运行。本文将介绍如何修复vcruntime140.dll丢失的问题以及一些…

【计算机网络八股】计算机网络(一)

目录 计算机网络的各层协议及作用&#xff1f;TCP和UDP的区别&#xff1f;UDP 和 TCP 对应的应用场景是什么&#xff1f;详细介绍一下 TCP 的三次握手机制&#xff1f;为什么需要三次握手&#xff0c;而不是两次&#xff1f;为什么要三次握手&#xff0c;而不是四次&#xff1f…

鼠标拖拽盒子移动

目录 需求思路代码页面展示【补充】纯js实现 需求 浮动的盒子添加鼠标拖拽功能 思路 给需要拖动的盒子添加鼠标按下事件鼠标按下后获取鼠标点击位置与盒子边缘的距离给 document 添加鼠标移动事件鼠标移动过程中&#xff0c;将盒子的位置进行重新定位侦听 document 鼠标弹起&a…

线性代数的学习和整理7:各种特殊效果矩阵特例(草稿-----未完成)

目录 1 矩阵 1.1 1维的矩阵 1.2 2维的矩阵 1.3 没有3维的矩阵---3维的是3阶张量 2 方阵 3 单位矩阵 3.1 单位矩阵的定义 3.2 单位矩阵的特性 3.3 为什么单位矩阵I是 [1,0;0,1] 而不是[0,1;1,0] 或[1,1;1,1] 3.4 零矩阵 3.4 看下这个矩阵 [0,1;1,0] 3.5 看下这个矩阵…

很好的启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统&#xff0c;在我们身边几乎随处可见。…

微信占内存?教你一招,瞬间释放手机内存

想必大家都有遇到手机内存不足的问题&#xff0c;而微信作为一款功能强大的应用&#xff0c;需要在手机上存储大量的数据以保证其正常运行。 具体来说&#xff0c;微信存储了大量的聊天记录、图片、视频、音频等多媒体文件&#xff0c;还需要存储用户的账号信息、联系人列表、表…

vue3 清空/重置reactive

序&#xff1a; 1、适用场景&#xff1a;表单切换验证如下图。 我举个例子&#xff0c;如果下拉选银行卡&#xff0c;提交表单的时候所属银行是要必填验证&#xff0c;但是如果选支付宝&#xff0c;那所属银行就非必填了&#xff0c;然而很多时候from的rules是以props来传的&a…

Tomcat运行后localhost:8080访问自己编写的网页

主要是注意项目结构&#xff0c;home.html放在src/resources/templates下的home.html下&#xff0c;application.properties可以不做任何配置。还有就是关于web包的位置&#xff0c;作者一开始将web包与tabtab包平行&#xff0c;访问8080出现了此类报错&#xff1a; Whitelabel…

C++11 新特性 ---- 静态断言 static_assert

1.断言 assert 在C11中&#xff0c;您可以使用assert关键字来检查运行时条件是否满足。assert声明了一个断言&#xff0c;它将在运行时检查给定的条件是否成立。如果条件不成立&#xff0c;将输出一个错误消息并可能终止程序。 在程序中包含头文件<cassert> 或 <ass…

axios 各种方式的请求 示例

GET请求 示例一&#xff1a; 服务端代码 GetMapping("/f11") public String f11(Integer pageNum, Integer pageSize) {return pageNum " : " pageSize; }前端代码 <template><div class"home"><button click"getFun1…

ARM--day7(cortex_M4核LED实验流程、异常源、异常处理模式、异常向量表、异常处理流程、软中断编程、cortex_A7核中断实验)

软中断代码&#xff1a;&#xff08;keil软件&#xff09; .text .global _start _start:1.构建异常向量表b resetb undef_interruptb software_interruptb prefetch_dataabortb data_abortb .b irqb fiq reset:2.系统一上电&#xff0c;程序运行在SVC模式1>>初始化SVC模…

pytorch lightning和pytorch版本对应

参见官方文档&#xff1a; https://lightning.ai/docs/pytorch/latest/versioning.html#compatibility-matrix 下图左一列&#xff08;lightning.pytorch&#xff09;安装命令&#xff1a;pip install lightning --use-feature2020-resolver 下图左一列&#xff08;pytorch_lig…