如果过滤器返回大小为 0 的列表,则抛出异常

Ari*_*deh 5 java java-stream

在以下代码中:

myList.stream()
    .filter(item -> someMethod(item))
    .map(item -> doSomething(item))
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*ejo 6

您可以使用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;
            }));
Run Code Online (Sandbox Code Playgroud)