Чи є хороший спосіб додати нову вартість до існуючої Stream
? Все, що я можу уявити, - це приблизно таке:
public <T> Stream<T> addToStream(Stream<T> stream, T elem ) {
List<T> result = stream.collect(Collectors.toList());
result.add(elem);
return result.stream();
}
Але я шукаю щось більш лаконічне, що я міг би використовувати в лямбда-вираженні без багатослівності.
Ще одне питання виникло, коли я намагався реалізувати принцип 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())
підтримкиadd
,Collectors.toCollection
замість цього ви можете вибрати тип отриманого списку.