首页 > 解决方案 > 如果过滤器返回大小为 0 的列表,则抛出异常

问题描述

在以下代码中:

myList.stream()
    .filter(item -> someMethod(item))
    .map(item -> doSomething(item))
    .collect(Collectors.toList());

RuntimeException如果过滤器的结果是大小为 0 的列表(即没有项目通过过滤器),我该如何抛出?

标签: javajava-stream

解决方案


您可以使用collectAndThen

    myList.stream()
            .filter(item -> someMethod(item))
            .map(item -> doSomething(item))
            .collect(Collectors.collectingAndThen(Collectors.toList(), result -> {
                if (result.isEmpty()) throw new RuntimeException("Empty!!");
                return result;
            }));

推荐阅读