Java 双重for循环性能
来源:互联网 发布:淘宝客有风险没 编辑:程序博客网 时间:2024/05/01 05:09
血的教训:尽量不要在循环内部对单条数据做处理,这会导致程序非常慢,如:
Java code
for (Map<String, Object> map : dataList2) {
String[] valArr = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
String fieldType = commonManager.searchForString(getFieldTypeSql, new Object[]{tableName,fields[i]});
if(TableUtil.TABLE_DATE_EN.equals(fieldType)){//如果是日期
if(StringUtils.isNotBlank((String) map.get(fields[i]))){
valArr[i] = DateTool.toDateString(DateTool.getDate((String) map.get(fields[i])),TableUtil.FORMAT_CREATE_DATE_1);
}
}else if(TableUtil.TABLE_PERCENTAGE_EN.equals(fieldType)){//如果是百分比
if(DataImportUtil.isValid(TableUtil.PATTERN_DECIMAL,(String) map.get(fields[i]))){//如果是数字
BigDecimal dec = new BigDecimal((String) map.get(fields[i]));
dec = dec.multiply(new BigDecimal(100));//小数*100
double f1 = dec.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小说
String rsnum = String.valueOf(f1);
if(DataImportUtil.isValid(TableUtil.PATTERN_INTEGER,rsnum) && rsnum.indexOf(".") > -1){//如果小数点后面全是0 只取整数
rsnum = rsnum.substring(0, rsnum.indexOf("."));
valArr[i] = rsnum + "%";
}else{
valArr[i] = rsnum + "%";
}
}else{
valArr[i] = "0%";
}
}else{
valArr[i] = (String) map.get(fields[i]);
}
}
sourcelist.add(valArr);
}
这段代码如果dataList2为1300,而 fields.length为11,则需要跑32分钟,我的电脑为而
Java code
for (Map<String, Object> map : dataList2) {
String[] valArr = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
valArr[i] = (String) map.get(fields[i]);
}
sourcelist.add(valArr);
}
如果数据进一步增加,那前一种足一让人有想死的冲动。因此尽可能在进入循环前想方设法的处理好数据;
另一些嵌套for循环的优化技巧:
1、
将循环次数最少的放到外面,循环次数最多的放里面,这样可以最大程度的(注:3个不同次数的循环变量共有6种排列组合情况,此种组合为最优)减少相关循环变量的实例化次数、初始化次数、比较次数、自增次数
2、
该方案在方案一的基础上,将循环变量的实例化放到循环外,这样可以进一步减少相关循环变量的实例化次数
原文地址:http://blog.csdn.net/dl020840504/article/details/19906843
- Java 双重for循环性能
- java如何跳出双重for循环
- 双重for循环Test
- for语句双重循环
- 双重for循环优化
- java跳出双重for循环,跳出双重for循环的内部循环并不执行外重循环内代码
- java打印99乘法表,双重for循环
- JAVA跳出双重循环
- for双重循环的总结
- JavaScript 数组双重for循环
- return跳出双重for循环
- oracle的双重for循环
- 17-for的双重循环
- 双重for循环删除数据
- 双重for循环打印九九乘法表
- Java如何跳出双重for循环和单重for循环
- 双重for循环语句块的优化
- 双重for循环的几个例子
- Android动画之旅(五)----容器的填充动画
- 回溯法 解决问题
- echarts 访问html正常 访问jsp空白
- HDU 6015 Skip the Class
- react+ant design实现Table的增、删、改
- Java 双重for循环性能
- mybatis常用jdbcType数据类型
- nw.js 开发跨平台应用(2)使用nw打包项目
- Echarts tooltip 自定义formatter设置字体颜色
- FASText(下):FASText
- Java堆空间的划分:新生代、老年代
- [Git技巧]两个Git帐号如何在一台电脑上共存
- 白话tensorflow分布式部署和开发
- #pragma声明