首先:for循环是java出生的时候就已经支持了,在jdk 1.5中开始支持 foreach 循环,foreach 在一定程度上简化了集合的遍历,但是由于场景的局限性不能完全替代 for 循环,stream是jdk 1.8中开始支持的,功能强大,效率也还可以。 测试代码:拿两个种集合,进行150000次操作来对比 补充: ArrayList:ArrayList是采用数组的形式保...
PerformanceTest.stream 1500 avgt 5 17.990 ± 0.517 us/op PerformanceTest.stream 2000 avgt 5 25.438 ± 0.721 us/op PerformanceTest.stream 2500 avgt 5 29.965 ± 1.067 us/op PerformanceTest.stream 3000 avgt 5 35.679 ± 0.844 us/op PerformanceTest.stream 3500 avgt 5 41.705 ± 2.245 us/op ...
* stream 并行处理 * @param list */publicstaticvoidparallelStreamMethod(List<Integer>list){list.parallelStream().forEach(i->{System.out.println("===");});} 结论:1万以内的数据,for循环的性能要高于foreach和stream;10万以内的数据明显可以看出stream效率最高,其次foreach,最后是for。 [10万数据时间 ...
Stream<String> sm3 = Stream.of("Tom", "Jerry", "Tony"); // 4、获取无穷序列流对象 Stream<Integer> sm4 = Stream.iterate(1, x -> x + 2);// 迭代 sm4.limit(10).forEach(System.out::println); Stream<Integer> sm5 = Stream.generate(new Random()::nextInt);// 生成 sm5.limit(10...
比较for循环、foreach循环及Stream方法效率 for循环 首先,10000数据的for循环,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 publicclassForTest { publicstaticvoidmain(String[] args) { Long startTime = System.currentTimeMillis();
这个答案谈到了java.util.ArrayList。其他Collection实现可能(而且确实是这样!)显示完全不同的结果。
对于找到一个对象集合中某个属性的最大值的问题,使用Stream的方式和使用foreach循环进行判断性能相比较,通常情况下使用Stream的方式更为高效。 原因是使用Stream可以使计算并行化,自动利用 CPU 多核的优势,同时也可以进行一些优化,例如延迟计算和短路计算等。
forEach性能在元素越小的情况下优势越明显,在10万元素遍历时性能反而没有Stream.forEach好了,不过在...
当中的forEach方法参数为Consumer<T>,这个函数式接口传入的参数为类型T,返回值类型为void,Consumer函数式接口拥有一个accept方法。 publicclassSimpleStream<T>{publicstaticvoidmain(String[]args){List<Integer>list=newArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);SimpleSt...