iCu*_*ous 1 java lambda java-8 java-stream
下面的代码创建空的地图Stream使用lambda expression和下一行用于输出的任何元素的信息流中.但是在运行代码时它会产生无限的输出.我不知道为什么,因为它应该打印{}一次因为地图是空的.有人可以解释发生了什么吗?
Stream<Map<String,String>> mapStream = Stream.generate(() -> {
return Collections.emptyMap();
});
mapStream.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
返回无限顺序无序流,其中每个元素由提供的生成
Supplier.这适用于生成恒定流,随机元素流等.
所以你有一个无限的流,每个新的元素都是通过调用来创建的Supplier,如果一个空的地图被表示为{}那么你有一个流:
{}, {}, {}, {} ...
Run Code Online (Sandbox Code Playgroud)
你在寻找的是:
Stream.of(Collections.emptyMap()).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
哪个会打印出来的{}.(虽然为什么你会想要这有点超出我...)
| 归档时间: |
|
| 查看次数: |
446 次 |
| 最近记录: |