Java Stream API-自定义无限源

时间:2018-08-09 00:52:01

标签: java java-stream

我想创建一个元素流,并能够在其创建后向其中添加元素。我尚未找到有关使用自定义源创建无限流的可能性的任何信息。

例如:我想用音频流中的新字节填充流。在输出中,我得到Stream<Byte>。而且我应该有一种机制可以在运行时用字节填充流。

1 个答案:

答案 0 :(得分:0)

我们可以通过调用静态Stream.concat()方法轻松地将给定元素添加到Stream上:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> newStream = Stream.concat(Stream.of(6), stream);

要追加,只需还原它们即可:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> newStream = Stream.concat(stream, Stream.of(6));

Stream不知道什么是索引。因此,必须将流收集到List,在所需的首选索引处插入元素,然后使用List.stream()再次生成流:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 6);
List<Integer> list = stream.collect(Collectors.toList());
list.add(4, 5);
Stream<Integer> newStream = list.stream();

请注意,Stream可以表示无限序列,因此有时您可能永远都无法到达集合中的新元素。