【发布时间】:2015-05-07 03:22:53
【问题描述】:
我对 C# 的 LINQ 有一些经验,并且正在尝试学习 Java 8 的流 API。现在在 LINQ 中,我经常使用 Single() Method,它从序列中挑选出唯一的对象,如果流中没有唯一的对象,则抛出异常。
现在:
- 我认为 Java 8 的流没有这样的方法是否正确?
- 是否有获得此功能的首选替代方法?
- 自己实现这个是个好主意吗?
【问题讨论】:
-
确实有点回答我的问题 1) 方法不是开箱即用的 2) 很多选项,对于首选的内容没有共识,自定义收集器看起来不错 3) 实现自定义收集器是什么人们在建议。所以感谢链接,搜索它但显然不够好。我需要采取什么措施来确认这是重复的吗?
-
您还应该考虑 Brian Goetz 的答案(或者将其包装在一个简单的实用方法中);或使用 Guava Iterators 实用程序类;具有您正在寻找的
Single行为。T elem = Iterators.getOnlyElement(stream.iterator()); -
stream.collect(Collectors.toMap(()->"single", Functions.identity()).get("single")如果有多个元素,也会抛出...
标签: java java-8 java-stream