java for循环map赋值_Java for循环Map集合优化实现解析
这篇文章主要介绍了Java for循环Map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在《for循环实战性能优化》中提出了五种提升for循环性能的优化策略,这次我们在其中嵌套循环优化小循环驱动大循环的基础上,借助Map集合高效的查询性能来优化嵌套for循环。
如果小循环和大循环的集合元素数量分别为M和N,则双层For循环的循环次数是M*N,随着M和N的增长,对性能的影响越来越大。因此,本文考虑进一步优化,使得循环次数变为M+N。利用下面的代码来模拟测试两种情况的性能:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class ForUpdate {
public static void main(String[] args) {
// for (int i = 0; i < 10000; i += 10) {
// loopGivenNum(i);
// }
for (int i = 10000; i < 100000; i += 10000) {
loopGivenNum(i);
}
System.out.println("----- done -----");
}
private static void loopGivenNum(int i) {
List smallLoop = getLoopList(i);
List bigLoop = getLoopList(2 * i);
long doByForTimes = doByFor(bigLoop,smallLoop);
long doByMapTimes = doByMap(bigLoop,smallLoop);
System.out.println("size " + i + ": " + doByForTimes + "," + doByMapTimes);
}
/**
* 获取循环变量
* @param size 循环变量元素个数
*/
private static List getLoopList(int size) {
List list = new ArrayList<>();
for (int i = 0; i < size; i++) {
list.add(String.valueOf(i));
}
return list;
}
private static long doByFor(List bigLoop,List smallLoop) {
long startTime = System.currentTimeMillis();
for (String str1 : smallLoop) {
for (String str2 : bigLoop) {
if (str1.equals(str2)) {
continue;
}
}
}
return System.currentTimeMillis() - startTime;
}
/**
* 使用 Map 优化
* @param bigLoop
* @param smallLoop
*/
private static long doByMap(List bigLoop,List smallLoop) {
long startTime = System.currentTimeMillis();
// 转换成map
Map loopMap = bigLoop.stream().collect(Collectors.toMap(k -> k,Function.identity()));
System.out.println(loopMap.size());
for (String str1 : smallLoop) {
if (loopMap.containsKey(str1)) {
continue;
}
}
return System.currentTimeMillis() - startTime;
}
}
输出结果:
size 10000: 756,97
size 20000: 3091,8
size 30000: 4342,7
size 40000: 8848,7
size 50000: 16317,7
size 60000: 31652,7
size 70000: 37078,7
由此可见,数据量越大嵌套For循环执行时间越长,而使用Map后,纵使数据量增长到了20w,执行时间也维持在7ms左右。数据量小的时候,执行结果就不再贴出来了。
结论:使用Map优化后的方法执行的效率比嵌套循环提高了很多很多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
java for循环map赋值_Java for循环Map集合优化实现解析相关推荐
- java map赋值_java 中的map怎么没有办法赋值?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package cn.jado.framework.util; import java.io.BufferedReader; import java.io ...
- java 循环map 优雅写法_Java for循环Map集合优化实现解析
这篇文章主要介绍了java for循环map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在<for循环实战性能优化> ...
- java foreach赋值_Java foreach循环使用详解[转]
本文转自码农网 本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环, ...
- java用for循环修改密码_Java for循环的几种用法分析
J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类 ...
- java 动态给属性赋值_java中为实体对象的动态属性赋值
慕勒3428872 下面是User类:import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;publ ...
- java 给static变量赋值_java static变量可以赋值吗?
java static变量可以赋值吗? 可以赋值的.static的主要作用是静态成员,指该变量的实例在内存中之存放一次.赋值是可以随便改的. java中static关键字 static是java中非常 ...
- stream map方法_Java Stream中map和flatMap方法
最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...
- java循环遍历队列_java实现循环队列
java实现循环队列 循环队列的优点 普通队列出队操作开销大:在出队操作时,索引为0后面的所有元素,都需要往前移动一位,元素越多,消耗的时间也越多,时间复杂度为O(N). 循环队列的逻辑: 1.当元素 ...
- java循环左一_java实现循环左移和右移的简单算法
java实现循环左移和右移的简单算法 byte a=112,用程序实现,将其循环左移三位和右移三位. 112的二进制原码:0111 0000 112循环左移3位后的二进制码:1000 0011 112 ...
最新文章
- TEASOFT软件 | 动作帮助信息定义语法
- 程序员必须知道的10大基础实用算法及其讲解
- 百度机器人对战人类最强大脑,赢在了小数点后第二位
- ASP.NET经典How to do文章汇总
- android studio m1,Android Studio 4.0发布 为Android 11做好准备
- CentOS8下安装docker
- 机器学习-分类之多层感知机原理及实战
- 【Java】京东面试:说说MySQL的架构体系
- linux内核--设备驱动程序(学习笔记)
- iOS应用支持IPV6,就那点事儿
- obj模型 vue_Vue各种各样的模型库 Cornucopia 3D for Vue
- Charles 手机https抓包
- 关于alfa无线设备
- 【Excel 教程系列第 16 篇】打印 Excel 表格时,如何设置每页都有表头
- 华为2288v3安装linux系统,华为RH2288 V3怎么装系统
- 数字功放和模拟功放差异介绍
- 淘宝双十一自动化领喵币python脚本
- Windows10官网下载与安装U盘的制作
- 爬虫—dy直播各个类别下直播数据
- 大学计算机专业游戏本推荐,选这几款就对了!大学生笔记本电脑盘点推荐