我对C#的LINQ有一些经验,我正在尝试学习Java 8的流API。现在在LINQ中,我经常使用Single() Method,它从序列中选择一个唯一的对象,如果流中没有一个唯一的对象,则抛出异常。
现在:
答案 0 :(得分:4)
以下是获得此功能的一种方法:
Stream<String> stream = Stream.of ("first");
String single = stream.reduce((a,b)->{throw new SomeException();})
.get();
这个想法是,如果有多个元素,reduce
会在lambda表达式中抛出异常。如果没有元素,get()
会抛出NoSuchElementException
。
您还可以通过将代码更改为:
来更改没有元素时抛出的异常Stream<String> stream = Stream.of ("first");
String single = stream.reduce((a,b)->{throw new SomeException();})
.orElseThrow(SomeException::new);