Java中Map集合体系的基本使用和常用API

news2024/9/22 1:22:55

文章目录

  • Map集合体系
    • Map集合概述和使用
    • Map集合体系的特点
    • Map集合常用的API

Map集合体系

Map集合概述和使用

Map集合是一种双列集合,每个元素包含两个数据。

Map集合的每个元素的格式:key=value(键值对元素)。

Map集合也被称为“键值对集合”。

Map集合整体格式:

Collection集合的格式: [元素1,元素2,元素3..]

Map集合的完整格式:{key1=value1 , key2=value2 , key3=value3 , ...}

Map集合的使用场景之一:购物车系统

分析:

购物车提供的四个商品和购买的数量在后台需要容器存储。

每个商品对象都一一对应一个购买数量。

把商品对象看成是Map集合的建,购买数量看成Map集合的值。

例如: {商品1=2 , 商品2=3 , 商品3 = 2 , 商品4= 3}

在这里插入图片描述

Map集合体系的特点

在这里插入图片描述

Map集合中使用最多的Map集合是HashMap。

重点掌握HashMap , LinkedHashMap , TreeMap。其他的后续理解。

Map集合体系特点:

Map集合的特点都是由键决定的。

Map集合的键是无序,不重复的,无索引的,值不做要求(可以重复)。

Map集合后面重复的键对应的值会覆盖前面重复键的值。

Map集合的键值对都可以为null。

Map集合实现类特点:

HashMap:元素按照键是无序,不重复,无索引,值不做要求。(与Map体系一致)

public static void main(String[] args) {
    // 创建一个HashMap对象
    Map<String, Integer> maps = new HashMap<>();
    // 向集合添加元素
    maps.put("桌子", 2);
    maps.put("凳子", 10);
    maps.put("桌子", 10); // 键一样会覆盖前面的
    maps.put(null, null); // 键值对可以为null

		// 输出集合, 可以发现是无序的
    System.out.println(maps); // {null=null, 凳子=10, 桌子=10}
}

LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求。

public static void main(String[] args) {
    // 创建一个LinkedHashMap对象
    // Map<String, Integer> maps = new HashMap<>();
     Map<String, Integer> maps = new LinkedHashMap<>();
    // 向集合添加元素
    maps.put("桌子", 2);
    maps.put("凳子", 10);
    maps.put("桌子", 10); // 键一样会覆盖前面的
    maps.put(null, null); // 键值对可以为null

    // 输出集合, 是有序的
    System.out.println(maps); // {桌子=10, 凳子=10, null=null}
}

TreeMap:元素是按照键排序,不重复,无索引的,值不做要求。

public static void main(String[] args) {
    // 创建一个HashMap对象
    // Map<String, Integer> maps = new HashMap<>();
    // Map<String, Integer> maps = new LinkedHashMap<>();
    Map<String, Integer> maps = new TreeMap<>();
    // 向集合添加元素
    maps.put("ddd", 2);
    maps.put("bbb", 10);
    maps.put("ddd", 3);
    maps.put("aaa", 5);
    maps.put("ccc", 1);

    // 输出集合, 元素按照键进行排序
    System.out.println(maps); // {aaa=5, bbb=10, ccc=1, ddd=3}
}

Map集合常用的API

Map集合:

Map是双列集合的祖宗接口,它的功能是全部双列集合都可以继承使用的。

Map API如下:

方法名称说明
put(K key,V value)添加元素
remove(Object key)根据键, 删除键值对元素
clear()移除所有的键值对元素
containsKey(Object key)判断集合是否包含指定的键
containsValue(Object value)判断集合是否包含指定的值
isEmpty()判断集合是否为空
size()集合的长度,也就是集合中键值对的个数

put方法添加元素

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    System.out.println(maps); // {iPhone=6, 生活用品=15, 华为=10, 小米=5}
}

remove方法, 根据键删除元素

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    // 删除元素
    maps.remove("小米");

    System.out.println(maps); // {iPhone=6, 生活用品=15, 华为=10}
}

clear方法, 清空集合元素

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    // 清空元素
    maps.clear();

    System.out.println(maps); // {}
}

containsKey()方法, 判断是否包含指定键

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    // 判断是否包含指定键
    System.out.println(maps.containsKey("华为")); // true
    System.out.println(maps.containsKey("魅族")); // false
}

containsValue方法, 判断是否包含指定值

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    // 判断是否包含指定值
    System.out.println(maps.containsValue(6)); // true
    System.out.println(maps.containsValue(99)); // false
}

isEmpty, 判断集合是否为空

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    // 判断集合是否为空
    System.out.println(maps.isEmpty()); // false
}

size方法, 集合元素的个数

public static void main(String[] args) {
    // 创建Map集合对象
    Map<String, Integer> maps = new HashMap<>();

    // 添加元素
    maps.put("华为", 10);
    maps.put("小米", 5);
    maps.put("iPhone", 6);
    maps.put("生活用品", 15);
  
    // 返回集合元素的个数
    System.out.println(maps.size()); // 4
}

扩展方法: putAll合并其他集合, 合并遇到重复的key会进行合并

public static void main(String[] args) {
    Map<String, Integer> map1 = new HashMap<>();
    map1.put("java", 1);
    map1.put("C语言", 2);
    Map<String, Integer> map2 = new HashMap<>();
    map2.put("python", 4);
    map2.put("linux", 7);

    // 合并两个集合
    map1.putAll(map2);
    System.out.println(map1); // {{python=4, java=7, C语言=2}
}

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

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

相关文章

本地代码上传到gitlab

1、在本地代码目录中&#xff0c;鼠标右键Git Bash Here&#xff0c;会打开一个git命令操作窗口&#xff1b; 2、执行git init命令&#xff0c;此命令会在当前目录下创建一个.git文件夹, git init 3、将项目的所有文件添加到仓库中&#xff0c; git add -A 4、将add的文件…

【计算机毕业设计】75.教师工作考核绩效管理系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着社会不断进步与发展&#xff0c;生活节奏不断加快&#xff0c;信息已经成为我们生活中不可缺少的一部分&#xff0c;很多学校需要掌握大量的信息来了解特定学生的需求&#xff0c;传统的做法是组织大量的…

如何实现table表头固定但是tbody可以滚动【附源码实例】

【写在前面】经常看到表头固定&#xff0c;表身支持滚动的需求&#xff0c;由于项目经常会用到一些自定义的表格展示数据&#xff0c;之前经常发现每次都是自己去写&#xff0c;自己去重新定义样式&#xff0c;觉得特别的麻烦&#xff0c;现在我特针对这类的分享一下。 1、页面…

【电巢】新能源产业景气度加速向上,功率器件3000亿赛道国产替代已在路上!(附70+厂家名单部分厂家替代型号)

前言 目前消费电子疲软继续蔓延&#xff0c;半导体设计端分化明显&#xff0c;存储、CPU等产品需求延续弱势&#xff0c;但IGBT和SiC等功率器件逐步迎来收获期。半导体周期拐点已至&#xff0c;曙光乍现。 在整个半导体周期背景下&#xff0c;新能源汽车俨然已成为逆势窗口产业…

现在健身耳机哪个牌子好、2023年最好的健身房耳机推荐

很多朋友在运动健身的时候喜欢戴上耳机&#xff0c;在音乐的节奏中去运动&#xff0c;现在市面上的运动耳机选择也特别丰富&#xff0c;但是说实话&#xff0c;从专业角度来看能真正适合运动的蓝牙耳机其实还是比较罕见的。这也就导致了我们许多朋友在选购时特别容易踩坑&#…

React - redux 使用(由浅入深)

React - redux 使用&#xff08;由浅入深&#xff09;一. redux理解1. redux 介绍2. redux 使用情况3. redux 工作流程4. redux 三个核心概念4.1 Action4.2 Store4.3 Reducers5. redux 核心API5.1 createStore()5.2 Store5.2.1 Store 方法5.2.1.1 getState()5.2.1.2 dispatch(a…

Kotlin 开发Android app(十八):线程Thread和UI更新

多线程的好处是不言而喻的&#xff0c;它能帮我们刚更多的事情&#xff0c;同时干不同的事情在程序设计中是经常出现的&#xff0c;这种时候我们使用的是线程。 在Kotlin 中&#xff0c;使用的还是原先java 的那一套&#xff0c;用的还是Thread &#xff0c;可能是在java 中T…

翻译: 如何学习编译器:LLVM Edition

编译器和编程语言是一个很大的话题。您不能只选择学习路径并在某个时候完成它。有许多不同的区域&#xff0c;每个区域都是无穷无尽的。 在这里&#xff0c;我想分享一些有助于学习编译器的链接。这份清单不可能详尽无遗——每个人都很忙&#xff0c;没有人有时间阅读龙书。 …

前端知识大全之CSS

目录 一、概念讲解 学习CSS之前必学的HTML &#xff08;超链接&#xff09; 二、正文代码 1.行内样式 2.内部样式&#xff08;选择器&#xff09; 3.外部样式 4.样式的优先级 5.简单选择器之定义单个标签&#xff08;id&#xff09; 6.简单选择器之定义多个标签&#xff…

低代码平台,企业业务创新的最佳路径

数字化转型的必然趋势及面临的问题 数字经济时代&#xff0c;数字化转型是企业在行业赛道上领先的必经之路&#xff0c;然而&#xff0c;数字化转型升级的道路并不是畅通无阻的&#xff0c;也不是企业单枪匹马就能干成的&#xff0c;各个企业在转型过程中都或多或少会遇到技术…

MySQL-索引

一、介绍 索引是数据库对象之一&#xff0c;用于提高字段检索效率&#xff0c;使用者只需要对哪个表中哪些字段建立索引即可&#xff0c;其余什么都不做&#xff0c;数据库会自行处理。 索引提供指向存储在表的指定列中的数据值的指针&#xff0c;如同图书的目录&#xff0c;…

【MMDetection】MMDetection中AnchorGenerator学习笔记

文章目录初始化-AnchorGenerator()Anchor平移-grid_priors计算有效anchor-valid_flags参考文献初始化-AnchorGenerator() TASK_UTILS.register_module() class AnchorGenerator:def __init__(self, strides, ratios, scalesNone, base_sizesNone, scale_majorTrue, octave_bas…

numpy的部分通用函数浅谈

numpy的部分通用函数 1.数组算术运算符 运算符对应的通用函数描述np.add加法运算&#xff08;即112)-np.substract减法运算&#xff08;即3-21&#xff09;-np.negative负数运算&#xff08;即-2&#xff09;*Nnp.multiply乘法运算&#xff08;即2*36&#xff09;/np.divide除…

Optional用法与争议点

Optional用法与争议点 简介 要说Java中什么异常最容易出现&#xff0c;我想NullPointerException一定当仁不让&#xff0c;为了解决这种null值判断问题&#xff0c;Java8中提供了一个新的工具类Optional&#xff0c;用于提示程序员注意null值&#xff0c;并在特定场景中简化代…

软件测试8年,却被应届生踩在头上,是应届生太牛了,还是我们太弱了?

前几天有个朋友向我哭诉&#xff0c;说他在公司干了8年的软件测试&#xff0c;却被一个实习生代替了&#xff0c;该何去何从? 这是一个值得深思的问题&#xff0c;作为职场人员&#xff0c;我们确实该思考&#xff0c;我们的工作会被实习生代替吗?这是一个很尖锐的问题&…

MFC基于对话框——仿照Windows计算器制作C++简易计算器

目录 一、界面设计 二、设置成员变量 三、初始化成员变量 四、初始化对话框 ​五、添加控件代码 1.各个数字的代码&#xff08;0~9&#xff09; 2.清除功能的代码 3.退格功能的代码 4.加减乘除功能的代码 5.小数点功能的代码 6.正负号功能的代码 7.等于功能的代码…

算法day42|背包问题

目录 01背包问题 二维 01背包问题 一维 416. 分割等和子集 背包问题分为&#xff1a;01背包&#xff0c;完全背包&#xff0c;多种背包01背包指的是有n种物品&#xff0c;每种物品只能取一个完全背包指的是有n种物品,每种物品可以取无限个多种背包指的是有n种物品&#xff0c;每…

公众号网课搜题接口

公众号网课搜题接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击…

常用的在线工具网站

1&#xff0c;在线Photoshop软件 https://www.uupoop.com/ PS在线图片编辑器是一个专业精简的在线ps图片照片制作处理软件工具,绿色免安装,免下载,直接在浏览器打开就可用它修正,调整和美化图像。 2&#xff0c;bilibili视频编辑器 https://bilibili.clipchamp.com/ 由哔哩哔哩…

(保姆级)国内1块钱注册火爆全网的OpenAI-ChatGPT机器人

下面有给出完整的注册流程。首先介绍一下它是什么&#xff0c;如果只想看注册往下翻&#xff01; 1块钱注册火爆全网的OpenAI-ChatGPT机器人OpengAI-ChatGPT能做什么如何注册1块钱收取验证码使用注册的账号登录ChatGPTOpengAI-ChatGPT能做什么 我作为一个程序员用了一段时间&a…