java零基础入门-map(上)

一、教学目标

  • 掌握何为map
  • 能够说出map集合的特点。
  • 能够使用map集合添加元素、删除元素等伴生方法。

二、正文

1、概述

       说起map,想必大家并不陌生吧。之前我在讲Collection集合的时候,我是给大家提过一嘴,我说Collection集合被称为单列集合,而Map中的集合被称为双列集合。

        这么描述,大家可能也比较懵,没关系,我给大家画个示意图,你们就能明白了。它两对于存放元素的数据形式是有所不同的,如下图。

         如上示意图,想必大家就能理解了吧。map为何被称为双列集合,其原因就是它存储元素的特点是键值对形式。

2、map集合特点

        所以接下来,要给大家总结一下,map究竟有哪些特点呢?我就简单用几个关键字给大家概要描述一下,也方便大家记忆。其包位于:java.util.Map。

  1. 集合元素无序
  2. 无索引
  3. 元素唯一(键唯一,值可重复)
  4. 双列

3、map接口常用子类

       通过查看map接口源码,map拥有多个子类。这里呢,我们主要是具体讲解HashMap与LinkedHashMap。但是作为map的其他的子类,我们还是要了解的哈。

  • HashMap:实现类。采用哈希表结构存放数据,元素存取顺序不一致。
  • LinkedHashMap:实现类。HashMap的子类,存放数据采用的是哈希表结构加链表结构。通过链表结构可以保证元素的存取顺序一致。通过哈希表可以保证键唯一,且需要重写键的hashCode()方法、equals()方法。
  • TreeMap:实现类。
  • HashTable:实现类。(面试容易被问到)

提示:对应Map接口(public interface Map<K,V>),带有两个泛型变量,在使用时,需要指明该泛型变量的数据类型,k,v数据类型可以一样, 也可以不同,根据具体需求而定。

4、map集合常用方法

        如下我给大家诺列一些map常用的伴生方法,你们是需要知道并且熟练使用的,在日后实际开发过程中,这些都是会经常用到的,然后还有些其他的方法你们就以了解为主。

  • V put(K key, V value); 

作用:通过把指定的键与指定的值添加到的Map集合中或者更新值。这方法其实你可以理解成既是添加也是修改。若map集合中存在该键,那么该方法就是进行值的修改且返回被修改前的值,若不存在该键,那就是添加,且返回值就为null。注意:键是无法修改的,值可以。

  • V get(Object key) ;

作用:通过指定的键对map集合中获取所对应的值。

  • V remove(Object key);

作用:通过指定的键来删除在map集合中的键值对,且返回值为被删除元素的值。

  • void clear();

作用:清除map集合中的所有元素。

  • boolean containsKey(Object key);

作用:判断是否包含指定的键的元素。

  • boolean containsValue(Object value);

作用:判断是否包含指定的值的元素。

  • int size()

作用:获取集合容器的长度。

三、实例演示

       如下我就来实战演练来实现教学目标的第三点跟第四点,这个你们就跟着我来敲就好了呀。如下我会带着你们手把手教学,带着大家如何使用map进行添加、删除元素。

       通过说使用map进行添加元素、删除元素。你们对map应该不再陌生了吧,会用到它伴生方法的那些啊?考考大家。

V put(K key, V value)
V remove(Object key)

        如上方法,你们具体知道如何使用么?我猜啊,小伙伴肯定一眼看到就明白。

1、put()方法

我们先来讲第一个:put()方法。其作用是把指定的键与指定的值添加到一个Map集合中或者更新对于键的值。

代码演示:

    @Testpublic void testMapPut() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//输出打印System.out.println(map);//添加元素String str1 = map.put("黄忠", "法师");System.out.println(str1);  //nullString str2 = map.put("吕布", "战士");System.out.println(str2);  //nullString str3 = map.put("黄忠", "射手");System.out.println(str3);  //"法师"//发现没有,"黄忠"键已存在了,但是str3返回的是法师?这说明什么?//输出打印System.out.println(map);}

控制台输出截图:

         如上演示,证明了以下两点结论。

  1. put方法新增,返回值为null
  2. put方法修改,返回值为修改前的键旧值。

2、remove()方法

        接下来我就来给大家演示一下remove()方法。

代码演示:

    @Testpublic void testMapRemove() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "法师");map.put("吕布", "战士");System.out.println("执行remove方法前:"+map);map.remove("黄忠");System.out.println("执行remove方法后:"+map);}

控制台输出打印:

执行remove方法前:{吕布=战士, 黄忠=法师}
执行remove方法后:{吕布=战士}

3、size()方法

代码演示:

    @Testpublic void testMapSize() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "法师");map.put("吕布", "战士");System.out.println("map集合容器长度为:"+map.size());}

控制台输出打印:

map集合容器长度为:2

4、clear()方法

代码演示:

    @Testpublic void testMapClear() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "法师");map.put("吕布", "战士");System.out.println("执行clear方法前:"+map);map.clear();System.out.println("执行clear方法后:"+map);}

控制台输出打印:

执行clear方法前:{吕布=战士, 黄忠=法师}
执行clear方法后:{}

5、containsKey()方法

6、containsValue()方法

... ...

        以上补充的这两及其他的常用方法,我这里就不给大家一一演示啦,这些就作为课后作业给大家布置了哦,希望大家都能自觉完成,勤加练习。

       好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

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

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

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的人群密度检测系统(深度学习模型+UI界面+训练数据集)

摘要&#xff1a;开发人群密度检测系统对于公共安全等领域具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个人群密度检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模型…

07-java基础-锁之AQSReentrantLockBlockingQueueCountDownLatchSemapho

文章目录 0&#xff1a;AQS简介-常见面试题AQS具备特性state表示资源的可用状态AQS定义两种资源共享方式AQS定义两种队列自定义同步器实现时主要实现以下几种方法&#xff1a;同步等待队列条件等待队列 1&#xff1a;AQS应用之ReentrantLockReentrantLock如何实现synchronized不…

oracle临时表空间不释放

项目报错 nested exception is java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP 原因是临时表空间满了&#xff0c;临时表空间一直增长&#xff0c;未释放导致临时表空间使用率100%。 查询临时表空间使用率 --临时表空间利用率…

拓扑排序 很简单

原文链接&#xff1a;图论第四讲&#xff1a;拓扑排序 说明&#xff1a;CSDN和公众号文章同步发布&#xff0c;需要第一时间收到最新内容&#xff0c;请关注公众号【比特正传】。 之前的图论合集文章中讲了图的存储遍历、最短路等算法&#xff0c;文章链接如下 图论第一讲&am…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑碳捕集机组与氢储能系统协调运行的源荷储低碳经济调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

AI新工具(20240312) Midjourney官方发布角色一致性功能;免费且开源的简历制作工具;精确克隆语调、控制声音风格

1: Midjourney角色一致性功能 使人物画像在多方面高度一致成为可能。 Midjourney的角色一致性功能的使用方法如下&#xff1a; ⭐在你的输入指令后面加上 --cref URL&#xff0c;其中URL是你选择的角色图像的链接。 ⭐你可以通过 --cw 参数来调整参照的强度&#xff0c;范围…

剑指offer经典题目整理(四)

一、树的子结构 1.链接 树的子结构_牛客题霸_牛客网 (nowcoder.com) 2.描述 给两颗二叉树A B&#xff0c;判断B是不是A的子结构 3.思路 将问题拆解开来&#xff0c;首先是找到a树中子结构的位置&#xff0c;然后是判断是否相同&#xff0c;也就是说&#xff0c;我们需要去…

interFoam-UEqn.H/pEqn.H

压力方程 “pEqn.H” {volScalarField rAU("rAU", 1.0/UEqn.A()); // rAU:在速度方程的的最后一个解中&#xff0c;矩阵对角项系数的倒数surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU)); //转换为表面标量场volVectorField HbyA(con…

36+程序员3站考研:国家线轻松拿捏

基本情况是&#xff1a;年龄较大&#xff0c;比36还大&#xff0c;本科是自考&#xff0c;十几年来一直从事编程相关工作。 第一年考数学太慌了&#xff0c;选择题全蒙的&#xff0c;结果填空题一道没算对&#xff0c;大题全不会&#xff0c;所以尽管总分280多但是数学没过国家…

Chrome下载B站视频字幕的插件

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

软考高级:敏捷方法概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

LED基础知识分享(一)

大家好&#xff0c;我是砖一。 今天给大家分享一下&#xff0c;LED的基础知识&#xff0c;有照明行业&#xff0c;或者对LED感兴趣的朋友&#xff0c;可以学习一下&#xff0c;希望对你有用~ 一&#xff0c;什么是LED (Light Emitting Diode)? 1&#xff0c;LED是一种发出某…

AssetBundle打包与加载

官方文档 参照视频 1.AssetBundle打包 1.1设置资源的命名和后缀 命名只支持小写 1.2创建Editor文件夹&#xff0c;在里面创建编辑器打包AssetBundle的脚本 using UnityEditor; using System.IO;public class CreateAssetBundles {[MenuItem("Assets/Build AssetBun…

【机器学习】样本、特征、标签:构建智能模型的三大基石

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

C++(3/12)

自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和 #include <iostream>using name…

C++ std::list的merge()使用与分析

看到《C标准库第2版》对list::merge()的相关介绍&#xff0c;令我有点迷糊&#xff0c;特意敲代码验了一下不同情况的调用结果。 《C标准库第2版》对list::merge()的相关介绍 list::merge()定义 merge()的作用就是将两个list合并在一起&#xff0c;函数有2个版本&#xff1a;…

深入浅出FISCO BCOS:区块链底层平台

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 我前面有补充相关的区块链的知识 如果没有了解的话 可能部分概念或名词会不懂哦 建议先了解一波再来看~http://t.c…

算法-二分与差分-503.借教室

题目 思路 代码不超时&#xff1a;限制在10的8次方以内&#xff1b;线段树能处理的数据上限是10^5二分&#xff1a;具有二段性&#xff0c;第一个订单不满足&#xff0c;后面的订单也不用去考虑差分&#xff08;前缀和的逆运算&#xff09;&#xff1a;题目的要求是将一个区间…

VulnHub - DarkHole

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog DarkHole 靶机下载地址&#xff1a;DarkHole: 1 ~ VulnHub 0x01 信息收集 Nmap扫描目标主机&#xf…

深度学习——第10章 优化神经网络:如何防止过拟合(DNN)

第10章 优化神经网络:如何防止过拟合(DNN) 目录 10.1 什么是过拟合 10.2 L1、L2正则化 10.3 L2正则化的物理解释 10.4 Dropout正则化 10.5 其它正则化技巧 10.6 总结 上一课,我们一步步搭建了一个深层神经网络来实现图片的分类。结果显示,随着网络层数加深,隐藏层数…