在做实验的过程中,有时会遇到大规模集合的求和计算。如下给出了两种求和方法:
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");
}
}
程序运行结果为:

可以看到第二种方式的效率更高。但当集合规模较小时,第一种方式效率更高。
本文对比了两种在Java中对大规模集合进行求和计算的方法。第一种方法使用传统的for循环,而第二种方法利用了parallelStream并行流。实验结果显示,对于大规模数据集,第二种方法的效率显著高于第一种。
557

被折叠的 条评论
为什么被折叠?



