Java学习路线(14)——Map集合类

news2025/1/19 23:28:08

一、介绍

概念

  • Map集合是一种双列集合,每个元素包含两个数据。
  • 元素格式:【key=value】键值对元素
  • Map又称为 “键值对集合”

Map集合格式: {key1=value1,key2=value2,key3=value3,…}


二、Map集合的特点

Map家族图
在这里插入图片描述

1、说明:

  • 使用最多的Map集合是HashMap。
  • 重点是HashMap、LinkedHashMap,TreeMap。

2、体系特点:

  • 由键决定获取的值。
  • Map的键是无序、不重复、无索引的,值不做要求。
  • Map重复键相继覆盖前面的键值。
  • Map的键值对都可以为null。

三、Map集合API

由于Map集合是双列集合的父接口,它的功能为所有双列集合通用功能。

常用方法API

方法说明
V put(K key,V value)添加元素
V remove(Object key)根据键删除元素
V get(Object key)根据键获取元素
void clear()清空集合
boolean containsKey(Object key)判断集合中是否包含指定的键
boolean containsValue(Object value)判断集合中是否包含指定的值
Set keySet()获取集合中所有的键
Collection values()获取集合中所有的值
boolean isEmpty()判断集合是否为空
int size()获取集合长度
Map<K,V> putAll(Map<K,V> M)合并集合

四、Map的遍历方法

1、键找值

主要用于对象-value的键值对集合。

(1)流程

  • 获取键列表【Map.keySet()】
  • 根据键查找值【Map.get(key)】

(2)示例

class Main{
    public static void main(String[] args) {
        /*查找商品名为goods3的价格是多少?*/
        Map<String,Double> map = new HashMap<>();
        map.put("goods1",30.7);
        map.put("goods2",62.5);
        map.put("goods3",20.8);
        map.put("goods4",78.5);
        for (String key : map.keySet()) {
            if (key.equals("goods3")){
                System.out.println(map.get(key));
                break;
            }
        }
    }
}

/*打印结果*/
20.8

2、键值对

主要用于对象-value的键值对集合。

(1)流程

  • 获取所有键值对对象集合 【Set<Map.Entry<K,V>> entrySet()】
  • 获取键【K getKey()】
  • 获取值【V getValue()】

(2)示例

Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);

/*获取键值对对象*/
Set<Map.Entry<String, Double>> entries = map.entrySet();

/*遍历获取键与值*/
for (Map.Entry<String, Double> entry : entries) {
	System.out.println(entry.getKey() + "==>" + entry.getValue());
}

/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5

3、lambda表达式
(1)示例

Map<String,Double> map = new HashMap<>();
map.put("goods1",30.7);
map.put("goods2",62.5);
map.put("goods3",20.8);
map.put("goods4",78.5);

map.forEach((k,v)-> System.out.println(k + "==>" + v));

/*打印结果*/
goods1==>30.7
goods4==>78.5
goods3==>20.8
goods2==>62.5

五、Map的三种实现类
1、HashMap
特点: 无序、不重复、无索引,依赖hashCode()和equals()保证的唯一。若键要存储自定义对象,需要重写hashCode()和equals()。
底层: Hash表,每个元素包含两个数据

2、LinkedHashMap
特点: 有序、不重复、无索引,保证存储和取出的元素顺序一致。
底层: Hash表,双链表机制记录存储顺序。

3、TreeMap
特点: 可排序、不重复、无索引,只对键数据默认升序排序或自定义排序。
底层: 与TreeSet底层相同。
实现排序的方式:

  • 类实现Comparable接口
  • 集合自定义Comparator比较器

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

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

相关文章

期末复习总结【MySQL】库和表的基本操作 + 增删改查CURD

文章目录 前言一、数据库的基本操作1, 查看库2, 创建库3, 使用库4, 删除库 二、表的基本操作1, 创建表2, 查看表3, 查看表结构4, 删除表 三、增加(Create)四、查询(Retrieve) (重点)1, 全列查询2, 指定列查询3, 查询字段为表达式4, 指定别名5, 去重6, 排序7, 条件查询7.1, 基本…

Hbase操作

(1) 启动 启动顺序&#xff1a;Hadoop--zookeeper—hbase 主进程&#xff1a;HMaster 从进程&#xff1a;HRegionServer 确认进程是否正常 (2) 进入终端 [rootmaster ~]# hbase shell (3) 查看状态 命令&#xff1a;status 表示有3台机器&#xff0c;0台down掉&…

软件测试3年以为的躺平了,没想到还得内卷,这题太难了...

前段时间我同事&#xff08;做测试的一个妹子&#xff09;跟我讲&#xff0c;感觉早上起来十分的疲惫&#xff0c;不想上班&#xff0c;问我们这是什么样的现象&#xff0c;其实有时候我也有这种感觉&#xff0c;虽然我卷&#xff0c;但我也是肉体凡胎啊&#xff01;不是机器人…

Qt, Text Edit 和 Plain Text Edit关于调整字体样式的问题

问题: 在编写小案例的过程中需要使用一个文本容器用于显示文本效果, 因为涉及文本字体的 加粗, 倾斜, 下划线, 以及颜色效果, 这里使用了 Text Edit 组件, 但是使用后发现容器中的文本无法实现同时设置 加粗 倾斜 下划线的情况, 且单独设置时只有 下划线 有效果, 加粗 倾斜 均无…

C++模板(详解)

非类型模板参数 模板参数可分为类型形参和非类型形参。类型形参&#xff1a; 出现在模板参数列表中&#xff0c;跟在class或typename关键字之后的参数类型名称。非类型形参&#xff1a; 用一个常量作为类&#xff08;函数&#xff09;模板的一个参数&#xff0c;在类&#xff…

字节跳动测试岗面试挂在二面,我复盘总结了失败原因,决定再战一次

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;字节的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

hystart++ 出炉

周三早上同事发我一个 rfc 9406 链接&#xff0c;microsoft hystart 标准化了&#xff0c;此前只是一个 draft。 说说我的看法。 信收敛不信测量&#xff0c;tcp 是端到端高熵体&#xff0c;对网络一无所知&#xff0c;过度信任测量则无法消除长尾&#xff0c;且可能劣化 p99…

Metasploit入门教程(非常详细)从零基础入门到精通,看完这一篇就够了!

通过本篇文章&#xff0c;我们将会学习以下内容&#xff1a; 1、在Windows上安装Metasploit 2、在Linux和MacOS上安装Metasploit 3、在Kali Linux中使用 Metasploit 4、升级Kali Linux 5、使用虚拟化软件构建渗透测试实验环境 6、配置SSH连接 7、使用SSH连接Kali 8、配…

【牛客刷题专栏】0x32:JZ45 把数组排成最小的数(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录 前言问…

【算法】LFU及其优化

文章目录 什么是LFU&#xff1f;设计思路代码实现&#xff08;基础版本&#xff09;参考论文代码实现&#xff08;优化版本&#xff09;区别 什么是LFU&#xff1f; LRU及其实现 上文讲解了LRU&#xff0c;他是一个基于最近是否被访问来做缓存淘汰的策略。 那么今天介绍一个新…

Postman的简单使用:

1. Postman 1.1 背景 当前主流的开发模式为&#xff1a;前后端分离开发。 前端人员开发前端工程&#xff0c;后端人员开发后端工程&#xff0c;只需要依据这份接口文档即可。在后端开发过程中每开发完一个功能&#xff0c;就需要对这个功能接口进行测试&#xff0c;由于现在是…

图灵完备游戏:信号计数 解法记录

使用1个全加器 2个半加器完成。这关的思想主旨在于如何把输出4&#xff0c;输出2&#xff0c;输出1的情况统一在一根导线上。 首先用一个全加器来完成输入2-4这三个引脚的计数&#xff0c;因为全加器输出范围二进制是00 - 11&#xff0c;而输入正好有两个引脚数位是2和1&…

linux周六串讲

esc. //粘贴复制上一条命令的参数 cat /etc/resolv.conf //查看DNS地址 route -n //查看网关 hostname //临时修改主机名 hostnamectl set-hostname 名称 //永久修改主机名 ssh root192.168.10.233 //用windows远程的格式&#xff0c;在CMD窗口输入这个命令 …

MYSQL数据库测评及整改

1、查询数据库版本&#xff1a;select version(); 2、查询已安装的插件&#xff1a;show plugins; 3、查询插件安装的位置&#xff1a; show variables like "%plugin_dir%"; 4、查询用户&#xff1a;选择数据库&#xff1a; select host,user,plugin from user; 5、…

Read View 数据快照,在MVCC里是如何工作的?

Read View 数据快照&#xff0c;在MVCC里是如何工作的&#xff1f; Read View 有四个重要的字段&#xff1a; ● m_ids &#xff1a;指的是在创建 Read View 时&#xff0c;当前数据库中「活跃事务」的事务 id 列表&#xff0c;注意是一个列表&#xff0c;“活跃事务”指的就…

Seata术语

1.什么是Seata Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网 2.Seata能干嘛 一个典型的分布式事务过程 分布式事务处理过程的一ID三组件模型&#xff1a; Transaction ID XID 全局唯一的事务ID三组…

WSL2编译安卓8.1源码,直接运行模拟器

目录 WSL2编译安卓8.1源码&#xff0c;直接运行模拟器WSL2下载安装移动到非系统盘下载和编译Android8直接运行emulator修改模拟器配置源码导入Android Studio并进行调试断点调试总结 WSL2编译安卓8.1源码&#xff0c;直接运行模拟器 学习Android Framework开发&#xff0c;需要…

零基础CTF入门指南+工具

ctf入门指南 CTF工具包获取地址&#xff1a;http://www.ctftools.com/ 如何入门&#xff1f;如何组队&#xff1f; capture the flag 夺旗比赛 类型&#xff1a; Web 密码学 pwn 程序的逻辑分析&#xff0c;漏洞利用windows、linux、小型机等 misc 杂项&#xff0c;隐写&…

2023年电工杯选题人数发布

该选题人数&#xff0c;主要基于根据各个平台开赛后24小时各项数据统计&#xff0c;进行评估&#xff08;方法见注释&#xff09;&#xff0c;最终得出2023年认证杯二阶段选题人数&#xff0c;大致为 题号选题人数A97B431 注释&#xff1a;选题人数来源&#xff1a;源自各个平台…

Python案例:获取music榜单数据,保存自己的music库

目录 前言本次知识点:开发环境:代码展示括展小知识尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 本次知识点: 爬虫基本流程 requests的使用 正则表达式的使用 开发环境: 解释器: python 3.8 编辑器: pycharm 2022.3 专业版 第三方模块使用 r…