持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。
我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
一、前言
论前几期啊,我们是分别讲了Object类
、Date类
、FormDate类
、Calendar类
、System类
及StringBuilder类
,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。
- java之Date类讲义
- java之DateFormat类讲义
- java之Calendar类讲义
- java之System类讲义
- java之StringBuilder类讲义
- java之Collection类
- java之包装类
- java之Iterator迭代器
- java之List集合
今天,我就要给大家讲讲一个双列集合-map。很多期内容,有小伙伴给我留言,说跟着我学,一般要看完文章才知道这一期讲了什么,所以,每一期,我都会先总结教学目标,而这期的教学目标如下:
- 掌握何为map
- 能够说出map集合的特点。
- 能够使用map集合添加元素、删除元素等伴生方法。
以上,就是这一期map集合教育目标。不过小伙伴们也不用担心内容过多,我会分集讲解的哈,保证一期内容不重。
那我们就开始今天这期的教学内容啦。
二、正文
1、概述
说起map,想必大家并不陌生吧。之前我在讲Collection集合的时候,我是给大家提过一嘴,我说Collection集合被称为单列集合,而Map中的集合被称为双列集合。
这么描述,大家可能也比较懵,没关系,我给大家画个示意图,你们就能明白了。它两对于存放元素的数据形式是有所不同的,如下图。
如上示意图,想必大家就能理解了吧。map为何被称为双列集合,其原因就是它存储元素的特点是键值对形式。
2、map集合特点
所以接下来,要给大家总结一下,map究竟有哪些特点呢?我就简单用几个关键字给大家概要描述一下,也方便大家记忆。其包位于:java.util.Map。
- 集合元素无序
- 无索引
- 元素唯一(键唯一,值可重复)
- 双列
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集合中或者更新对于键的值。
代码演示:
@Test
public void testMapPut() {
//创建一个map集合容器
Map<String, String> map = new HashMap<>();
//输出打印
System.out.println(map);
//添加元素
String str1 = map.put("黄忠", "法师");
System.out.println(str1); //null
String str2 = map.put("吕布", "战士");
System.out.println(str2); //null
String str3 = map.put("黄忠", "射手");
System.out.println(str3); //"法师"
//发现没有,"黄忠"键已存在了,但是str3返回的是法师?这说明什么?
//输出打印
System.out.println(map);
}
复制代码
控制台输出截图:
如上演示,证明了以下两点结论。
- put方法新增,返回值为null
- put方法修改,返回值为修改前的键旧值。
2、remove()方法
接下来我就来给大家演示一下remove()方法。
代码演示:
@Test
public 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()方法
代码演示:
@Test
public void testMapSize() {
//创建一个map集合容器
Map<String, String> map = new HashMap<>();
//添加元素
map.put("黄忠", "法师");
map.put("吕布", "战士");
System.out.println("map集合容器长度为:"+map.size());
}
复制代码
控制台输出打印:
map集合容器长度为:2
复制代码
4、clear()方法
代码演示:
@Test
public 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()方法
... ...
以上补充的这两及其他的常用方法,我这里就不给大家一一演示啦,这些就作为课后作业给大家布置了哦,希望大家都能自觉完成,勤加练习。
好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
四、文末
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------