网站首页 > 精选教程 正文
最近在面试的时候笔试碰到一道关于map的题,请手写出map遍历效率最高的方法。
关于map遍历的方式相信大家都知道,但是各个方法的一个效率高低可能有些人平常没有注意,所以在这做了一个简单的测试。
public class MapBianLiXiaoLvBiJiao {
private static Map<Integer,Integer> map=new HashMap<>();
static {
for (int i=0;i<10000;i++){
int j=0;
j+=i;
map.put(i,j);
}
}
public static void main(String[] args) {
MapBianLiXiaoLvBiJiao mapBianLiXiaoLvBiJiao = new MapBianLiXiaoLvBiJiao();
mapBianLiXiaoLvBiJiao.foreachMethod();
mapBianLiXiaoLvBiJiao.keySetMethod();
mapBianLiXiaoLvBiJiao.iteratorMethod();
mapBianLiXiaoLvBiJiao.streamForeachMethod();
}
// 通过foreach遍历entry
public void foreachMethod(){
Long startTime=System.currentTimeMillis();
for (Map.Entry<Integer,Integer> entry:map.entrySet()){
Integer key= entry.getKey();
Integer value=entry.getValue();
}
long endTime=System.currentTimeMillis();
System.out.println("foreach花费时间为:"+(endTime-startTime));
}
// 通过遍历keySet并获取value
public void keySetMethod(){
Long startTime=System.currentTimeMillis();
for (Integer key:map.keySet()){
Integer value=map.get(key);
}
long endTime=System.currentTimeMillis();
System.out.println("keySet遍历花费时间为:"+(endTime-startTime));
}
// 通过迭代器iterator遍历
public void iteratorMethod(){
Long startTime=System.currentTimeMillis();
Iterator<Map.Entry<Integer,Integer>> it=map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<Integer,Integer> entry=it.next();
Integer key=entry.getKey();
Integer value=entry.getValue();
}
long endTime=System.currentTimeMillis();
System.out.println("iterator遍历花费时间为:"+(endTime-startTime));
}
// 通过map.forEach
public void streamForeachMethod(){
Long startTime=System.currentTimeMillis();
map.forEach((key,value) -> {
Integer key1=key;
Integer value1=value;
});
long endTime=System.currentTimeMillis();
System.out.println("转换为流遍历花费时间为:"+(endTime-startTime));
}
}
执行结果如下:
foreach花费时间为:7
keySet遍历花费时间为:5
iterator遍历花费时间为:1
转换为流遍历花费时间为:122
经过上面的小测试可以看出,通过iterator迭代器对map进行遍历的方式效率是最高的,而map.forEach()遍历的效率是最低
- 上一篇: MAP函数遍历每一个值
- 下一篇: Java中如何迭代Map中的每条数据?
猜你喜欢
- 2024-12-24 Go 语言中的映射(Map)详解:键值对实际是如何存储的
- 2024-12-24 HashMap如何计算大小和遍历?
- 2024-12-24 go map实现原理
- 2024-12-24 一文读懂map和hash_map的差异原理
- 2024-12-24 前端问答:Map 和 Object 有啥不同?
- 2024-12-24 Java、Set、Map集合框架知识大全,收藏备用
- 2024-12-24 Go 语言 map 如何顺序读取?
- 2024-12-24 C++ Map总结
- 2024-12-24 Python中很常用的函数map(),一起来看看用法
- 2024-12-24 golang常用数据结构之map详细讲解
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)