如何创建Boolean.FALSE
的流,比如长度为100?生成布尔的流
什么我挣扎是:
- 本来我打算创造
Boolean.FALSE
数组。但是new Boolean[100]
返回一个NULL
的数组。所以我相当合理地考虑使用流API作为方便的Iterable
和几乎(1)Iterable
操纵工具; - 没有
Boolean
无PARAMS构造(2),因此我不能 使用Stream.generate()
,因为它接受Supplier<T>
(3)。
我发现的是Stream.iterate(Boolean.FALSE, bool -> Boolean.FALSE).limit(100);
给出了我想要的,但它似乎并不是很优雅的解决方案,恕我直言。
还有一个选项,我发现(4)是IntStream.range(0, 100).mapToObj(idx -> Boolean.FALSE);
,这在我看来似乎更加奇怪。
尽管这些选项不违反流API的流水线概念,是否有更简洁的方式来创建流Boolean.FALSE
?
为什么你认为你不能使用'Stream.generate()'?试试这个:'Stream.generate(() - > Boolean.FALSE).limit(100)' – Jesper
我无法想象这种流的任何合理用例。如果您遵循仅使用无状态函数的建议用法,即不依赖于处理顺序,则结果始终只能是由数百个相同元素组成的流或空流。无论最终结果如何,始终可以通过单个元素流生成它。 – Holger
@Holger我在无向图上检测周期。需要执行的步骤之一是检测并行边缘。我标记我访问过的每个顶点以检测并行性。所以每个顶点在“被访问”数组中都有一个匹配。迭代完成后,应该重置“被访问”数组。在这里,我让这样一个流发挥。为了这个目的,我可以使用0和1的数组,但为了清晰起见,我决定使用我使用的数据。 –