【发布时间】:2018-05-30 12:35:34
【问题描述】:
谁能解释一下下面java流代码的输出:
List<Integer> l = new ArrayList<>();
l.add(0);
l.add(1);
l.add(2);
l.add(3);
l.add(4);
l.add(4);
l.stream()
.distinct()
.map(v -> {
System.out.println("In Map " + v);
return v;
}).forEach(v -> {
System.out.println("In ForEach " + v);
});
我预计:
In Map 0
In Map 1
In Map 2
In Map 3
In Map 4
In ForEach 0
In ForEach 1
In ForEach 2
In ForEach 3
In ForEach 4
但它会打印:
In Map 0
In ForEach 0
In Map 1
In ForEach 1
In Map 2
In ForEach 2
In Map 3
In ForEach 3
In Map 4
In ForEach 4
【问题讨论】:
-
你有什么理由期望它是这样的?
-
流是惰性的,一次一个元素是从源中提取的,你看到的是预期的。我 100% 确定这是重复的...
标签: java java-8 java-stream