A'nın Stream
boş olup olmadığını nasıl kontrol edebilirim ve değilse bir istisna atabilirim, terminal dışı bir işlem olarak?
Temel olarak, aşağıdaki koda eşdeğer bir şey arıyorum, ancak aradaki akışı gerçekleştirmeden. Özellikle, akış fiilen bir terminal işlemi tarafından tüketilmeden önce kontrol gerçekleştirilmemelidir.
public Stream<Thing> getFilteredThings() {
Stream<Thing> stream = getThings().stream()
.filter(Thing::isFoo)
.filter(Thing::isBar);
return nonEmptyStream(stream, () -> {
throw new RuntimeException("No foo bar things available")
});
}
private static <T> Stream<T> nonEmptyStream(Stream<T> stream, Supplier<T> defaultValue) {
List<T> list = stream.collect(Collectors.toList());
if (list.isEmpty()) list.add(defaultValue.get());
return list.stream();
}