首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 8-省略繁琐的收集方法

Java 8-省略繁琐的收集方法
EN

Stack Overflow用户
提问于 2016-05-10 03:40:48
回答 8查看 4K关注 0票数 58

Java 8流api是一个非常好的特性,我非常喜欢它。有一件事让我心烦意乱,那就是90%的时间我希望输入作为集合,输出作为集合。结果是我不得不一直调用stream()collect()方法:

代码语言:javascript
复制
collection.stream().filter(p->p.isCorrect()).collect(Collectors.toList());

有没有什么java api可以让我跳过流,直接操作集合(就像c#中的linq?):

代码语言:javascript
复制
collection.filter(p->p.isCorrect)
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-05-10 05:58:39

如果你想对集合进行操作,Guava's FluentIterable是个不错的选择!

示例(获取前10个vip客户的id):

代码语言:javascript
复制
FluentIterable
       .from(customers)
       .filter(customer -> customer.isVIP())
       .transform(Client::getId)
       .limit(10);
票数 10
EN

Stack Overflow用户

发布于 2016-05-10 04:02:48

您可能喜欢使用StreamEx

代码语言:javascript
复制
StreamEx.of(collection).filter(PClass::isCorrect).toList();

这样做的好处是在保持不变性的同时稍微简短一些。

票数 17
EN

Stack Overflow用户

发布于 2016-05-10 03:47:12

如果在不修改原始集合的情况下需要过滤视图,可以考虑使用Guava的Collections2.filter()

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37124120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档