如何检查 Java 8 流是否为空?
2022-08-31 07:59:56
如何检查 a 是否为空,如果不是,则作为非终端操作引发异常?Stream
基本上,我正在寻找与下面的代码等效的东西,但没有实现中间的流。特别是,在流被终端操作实际使用之前,不应进行检查。
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();
}