首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要使用java 8过滤器以高效的方式过滤我的自定义对象列表。

我需要使用java 8过滤器以高效的方式过滤我的自定义对象列表。
EN

Stack Overflow用户
提问于 2017-03-01 02:54:56
回答 2查看 1.9K关注 0票数 1

下面的代码是用java6编写的,如何在java8中使用流和函数功能进行编码?

代码语言:javascript
复制
List<FileTransAuditInfo> workRequestFileTransAuditListforSubmission = new ArrayList<FileTransAuditInfo>();

for(FileTransAuditInfo fileTransAuditInfo : workRequestFileTransAuditList) {
    if (fileTransAuditInfo.getFileEventType().equalsIgnoreCase(type1) ||
        fileTransAuditInfo.getFileEventType().equalsIgnoreCase(type2)) {
            workRequestFileTransAuditListforSubmission.add(fileTransAuditInfo);
    }
}

return workRequestFileTransAuditListforSubmission;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-01 03:01:26

与Java 8中的代码等效的代码是:

代码语言:javascript
复制
public static void main(String[] args) {

    List<FileTransAuditInfo> workRequestFileTransAuditList = new ArrayList<>();

    final String type1 = "type 1";
    final String type2 = "type 2";

    List<FileTransAuditInfo> workRequestFileTransAuditListforSubmission = workRequestFileTransAuditList.stream()
            .filter(file -> file.getFileEventType().equalsIgnoreCase(type1) || file.getFileEventType().equalsIgnoreCase(type2)) 
            .collect(Collectors.toList());

}

在这里查看如何在Java8中使用streams

票数 2
EN

Stack Overflow用户

发布于 2017-03-01 03:17:20

首先.stream() List,然后使用Stream#filter,最后使用collect连接到一个新的List

通过使用helper函数,您可以减少过滤器测试的重复性。

代码语言:javascript
复制
Function<String,Predicate<FileTransAuditInfo>> eventTypeIs =
    type -> file -> file.getFileEventType().equalsIgnoreCase(type);

return workRequestFileTransAuditList
    .stream()
    .filter(eventTypeIs.apply(type1).or(eventTypeIs.apply(type2)))
    .collect(Collectors.toList());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42516622

复制
相关文章

相似问题

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