我想创建一个元素流,并能够在其创建后向其中添加元素。我尚未找到有关使用自定义源创建无限流的可能性的任何信息。
例如:我想用音频流中的新字节填充流。在输出中,我得到Stream<Byte>
。而且我应该有一种机制可以在运行时用字节填充流。
答案 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可以表示无限序列,因此有时您可能永远都无法到达集合中的新元素。