有没有一种向现有价值添加新价值的好方法Stream
?我能想象的是这样的:
public <T> Stream<T> addToStream(Stream<T> stream, T elem ) {
List<T> result = stream.collect(Collectors.toList());
result.add(elem);
return result.stream();
}
但我正在寻找可以在lambda表达中使用的更简洁的内容,而无需冗长。
当我尝试实施PECS原理时出现了另一个问题:
public <T> Stream<? super T> addToStream(Stream<? super T> stream, T elem ) {
List<? super T> result = stream.collect(Collectors.toList()); //error
result.add(elem);
return result.stream();
}
似乎通配符不起作用Stream.collect
,我想知道为什么。提前致谢。
List
从collect(Collectors.toList())
supports返回add
,您可以使用Collectors.toCollection
来选择您得到的列表的类型。