持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学习,互相学习,才能成长的更快,对吧。
我是一名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集合进行遍历?这个问题呢?我将会通过两种不同的遍历实现方式分别给大家进行教学演示,具有很好的入门学习价值,请大家好好听。
1、Map集合遍历-键找值方式(效率低)
说起遍历,map自身带有这么一个方法:keySet()。我们先来简单研究一下,该方法是干啥用的?在学习map集合时,我对这个方法我是没有提及的,不知道优美与小伙伴是自己私下了解过的?如果有,说明你觉悟很高哦,继续保持,而没有私下自己去主动拓展学习的小伙伴,这你们可得好好反思一下了啊,为何大佬与你差距会如此之大?
好,说起keySet(),它的作用就是获取map集合中的所有键。我说到这里了,你们就应该可以猜到我要如何实现通过该遍历目标了。
我们先来简单演示一下:
@Test
public void testMapKeySet() {
//创建一个map集合容器
Map<String, String> map = new HashMap<>();
//添加元素
map.put("黄忠", "射手");
map.put("吕布", "战士");
map.put("妲己", "法师");
System.out.println(map.keySet());
}
控制台打印输出结果:
[吕布, 妲己, 黄忠]
既然通过keySet()方法可以获取到map集合中的所有键,那么我们不妨结合get(),不就达成了遍历的目标啦,你们觉得呢?
键找值方式遍历代码演示如下:
@Test
public void testMapKeySet() {
//创建一个map集合容器
Map<String, String> map = new HashMap<>();
//添加元素
map.put("黄忠", "射手");
map.put("吕布", "战士");
map.put("妲己", "法师");
Set<String> keys = map.keySet();
System.out.println("map所有的键为:" + keys);
//键找值遍历方式
for(String key:keys){
//通过key获取对应的值
String value = map.get(key);
System.out.println(key+"所对应的值为:"+value);
}
}
控制台打印输出结果:
map所有的键为:[吕布, 妲己, 黄忠]
吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手
你们看明白了么?取之于map,用之于map。相对遍历方式也是比较能理解的吧?
2、Map集合遍历-键值对方式
以上方式我是演示完了,那么对于键值对的遍历方式对map进行遍历,这我还需要讲么?小伙伴么,你们说我还需要讲一讲么,所谓的键值对,就是通过遍历map集合全身,你们可以想象对于单列集合是如何遍历的,举一反三。
还是看到有的小伙伴对于双列集合不是很了解,“单列直接就是直接list.get(index),那双列,我不会,还得需要你带带我”。问题不大,那我就也简单给大家简单演示一下吧。
**方式一:**可以结合map提供的entrySet()方法进来遍历。
这里可能就要给大家科普一下了,entrySet()方法,它的作用就是获取到Map集合中所有的键值对对象的集合(Set集合)。
Set<Map.Entry<K, V>> entrySet();
键值对遍历方式代码演示如下:
@Test
public void testMapFor() {
//创建一个map集合容器
Map<String, String> map = new HashMap<>();
//添加元素
map.put("黄忠", "射手");
map.put("吕布", "战士");
map.put("妲己", "法师");
//获取所有的entry对象
Set<Map.Entry<String, String>> entrySet = map.entrySet();
//键值对方式遍历
for (Map.Entry<String, String> entry : entrySet) {
//解析entry对象
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "所对应的值为:" + value);
}
}
控制台打印输出结果:
吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手
补充一点,其中遍历entrySet集合所获取到的Entry对象,它是在map中是一一对应关系, entry项将键值对的对应关系封装成了键值对对象,这样在遍历map时,就可以从每个entry对象中获取对应的键与对应的值。
像这种遍历方式,主要还是对entrySet()方法的一个运用。接下来就是纯原生遍历方式了。我们直接使用Iterator迭代器来进行对map遍历。
**方式二:**可以结合Iterator迭代器使用。
键值对遍历方式代码演示如下:
@Test
public void testMapByIterator() {
//创建一个map集合容器
Map<String, String> map = new HashMap<>();
//添加元素
map.put("黄忠", "射手");
map.put("吕布", "战士");
map.put("妲己", "法师");
//获取所有的entry对象
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
//Iterator迭代器
while (iterator.hasNext()) {
Map.Entry<String, String> next = iterator.next();
System.out.println(next.getKey() + "所对应的值为:" + next.getValue());
}
}
控制台打印输出结果:
吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手
总而言之,以上提供了三种遍历方式,相对而言,通过map键找值的方式效率是最低的,这我不推荐大家在日常过程中使用哈。
... ...
好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
三、文末
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------