Java 8开始引入了Stream流式操作,终于稍微可以像写Python一样写代码了,不用满大街写For语句了,但是因为这篇文章的缘故,导致我对它的性能一直抱有怀疑态度。
但是仔细分析示例中的代码,其实会发现虽然它的示例代码中使用了Stream但是其实那个很慢的结果真正大部分的时间都花在了Integer的自动装、拆箱操作上,真正的Java 8应该是怎么写这个代码呢,还是自己动手试验一下好了。
package org.acgeek;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.IntStream;
public class ForVsStream {
public static void main(String[] args) {
List forTest = new ArrayList<>();
List streamTest = new ArrayList<>();
IntStream.range(0, 100).forEach(n -> {
int[] a = new Random().ints(5000000, 1, 99999999).toArray();
int e = a.length;
int m = Integer.MIN_VALUE;
long thisTime = System.nanoTime();
for (int i = 0; i < e; i++)
if (a[i]