当前位置:网站首页>Map常见的遍历方式-keySet 和 entrySet
Map常见的遍历方式-keySet 和 entrySet
2022-08-04 13:26:00 【自律的西瓜L】
1.使用keySet进行遍历
实现步骤:
(1)使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中
(2)遍历set集合,获得Map集合中的每一个key
(3)通过Map集合中的方法get(key),通过key找到value
@Test
public void testKeySet() {
Map<String, Integer> map = new ConcurrentHashMap<>(16);
map.put("one",1);
map.put("two",2);
map.put("three",3);
// 1.增强for循环遍历map中的key
for (String key : map.keySet()) {
// 通过key找到对应的value
Integer value = map.get(key);
System.out.println(key + "->" +value);
}
System.out.println("------------------------");
// 2.使用迭代器来进行遍历(map集合中所有的key取出来,存储到Set集合中)
Iterator<String> iteratorKey = map.keySet().iterator();
while (iteratorKey.hasNext()){
String key = iteratorKey.next();
Integer value = map.get(key);
System.out.println(key + "->" +value);
}
}
2.使用entrySet进行遍历
实现步骤:
(1)Map.entrySet()把map的键值映射成Set集合
(2)Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象
(3)getKey(): 返回键值对的key
(4)getValue(): 返回键值对的value
@Test
public void testEntrySet() {
Map<String, Integer> map = new ConcurrentHashMap<>(16);
map.put("one",1);
map.put("two",2);
map.put("three",3);
// Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象。
// 而keySet中迭代器返回的只是key对象,还需要到map中二次取值。故entrySet要比keySet快一倍左右。
Set<Map.Entry<String, Integer>> entries = map.entrySet();
Iterator<Map.Entry<String, Integer>> entryIterator = entries.iterator();
while (entryIterator.hasNext()){
// 迭代出来的是每一个实例的对象,包含键值对
Map.Entry<String, Integer> entry = entryIterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "->" + value);
}
}
3.对比
(1)keySet获取value只能通过先获取key才能得到value
(2)entrySet在迭代之后可以直接从迭代出来的实例对象中直接获取Key和Value
(3)两个方法遍历的结果都一样,若对查询速度有要求就选entrySet(),entrySet可以提高性能。
边栏推荐
猜你喜欢
随机推荐
(记录)异步并发,多线程处理表的统计
nVisual二次开发——第二章 nVisual API操作指南Swagger使用
持续交付(三)Jenkinsfile语法使用介绍
postgre 支持 newsql 特性可行性有多大?
oracle sql中根据条件判断是否插入数据
【毕设选题推荐】机器人工程专业毕设选题推荐
干掉visio,这个画图神器真的绝了
座舱人机交互「暗潮汹涌」,语音「下」,多模态「上」
新 Nsight Graph、Nsight Aftermath 版本中的性能提升和增强功能
项目里的各种配置,你都了解吗?
跨链桥已成行业最大安全隐患 为什么和怎么办
大势所趋之下的nft拍卖,未来艺术品的新赋能
RK1126编译gdb 板子上gdb调试程序
odoo13笔记点
SCA兼容性分析工具(ORACLE/MySQL/DB2---&gt;MogDB/openGauss/PostgreSQL)
LeetCode_643_子数组的最大平均数Ⅰ
Ceres库运行,模板内报内存冲突问题。(已解决)
ROS设置plugin插件
Escape character is ‘^]’什么意思?怎么使用telnet
持续交付(四)Jenkins多线程任务执行