Java中大规模集合快速求和计算
在做实验的过程中,有时会遇到大规模集合的求和计算。如下给出了两种求和方法:
package topic;
import java.util.ArrayList;
import java.util.List;
public class DoubleTest {
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
for (int i = 0; i < 100000000; i++) {
stringList.add( "2.4" );
}
long startTime=System.currentTimeMillis(); //获取开始时间
double sum = 0;
for (int i = 0; i < stringList.size(); i++) {
sum += (Double.parseDouble( stringList.get(i) ) - 1.2)*2 ;
}
System.out.println(sum);
long endTime=System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
long sta=System.currentTimeMillis(); //获取结束时间
double rslt1 = stringList.parallelStream()
.mapToDouble( s -> (Double.parseDouble( s ) - 1.2)*2 ).sum();
System.out.println(rslt1);
long endTime1=System.currentTimeMillis(); //获取开始时间
System.out.println("程序运行时间: "+(endTime1-sta)+"ms");
}
}
程序运行结果为:
可以看到第二种方式的效率更高。但当集合规模较小时,第一种方式效率更高。
作者:HFUT_qianyang
来源链接:https://blog.csdn.net/qy20115549/article/details/108007128