下面的代码使用Stream创建空的Map lambda expression,下一行用于输出流中的任何元素。但是在运行代码时,它提供了无限的输出。我不知道为什么,因为它应该打印{}一次,因为地图是空的。有人能解释一下发生了什么事吗?
Stream<Map<String,String>> mapStream = Stream.generate(() -> {
return Collections.emptyMap();
});
mapStream.forEach(System.out::println);发布于 2016-08-11 16:09:28
返回一个无限顺序无序流,其中每个元素由提供的
Supplier生成。这适用于产生常量流、随机元素流等。
因此,您有一个无限流,其中每个新元素都是通过调用Supplier创建的,如果空映射表示为{},则有一个流:
{}, {}, {}, {} ...你要找的是:
Stream.of(Collections.emptyMap()).forEach(System.out::println);它只会打印{}。(虽然你为什么要这么做,但我有点不明白.)
发布于 2016-08-11 16:09:00
这就是文档中关于Stream.generate(Supplier)的内容
返回一个无限顺序无序流,其中每个元素由提供的
Supplier生成。这适用于产生常量流、随机元素流等。
https://stackoverflow.com/questions/38901285
复制相似问题