Java流:根据流中的值从流中抛出异常

eat*_*ode 4 java exception java-stream

考虑下面的虚拟代码:

List<Integer> intList = new ArrayList<>();
intList.add(10);
intList.add(20);
intList.add(30);

intList.stream().filter(i -> i > 40)
    .throwIf(size of list <= 0)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

java流中是否有任何功能可以实现上述代码?

注意:上面的代码只是我正在做的事情的表示,它不是我正在寻找的确切代码.

Era*_*ran 6

您可以检查是否有任何元素通过了您的过滤器,如果没有,则使用Optional's orElseThrow抛出异常:

Integer match = 
    intList.stream()
           .filter(i -> i > 40)
           .findAny()
           .orElseThrow(...);
Run Code Online (Sandbox Code Playgroud)

当然,这只会给你一个在没有抛出异常时传递过滤器的元素,所以我不确定它是不是你想要的.