下面的代码是用java6编写的,如何在java8中使用流和函数功能进行编码?
List<FileTransAuditInfo> workRequestFileTransAuditListforSubmission = new ArrayList<FileTransAuditInfo>();
for(FileTransAuditInfo fileTransAuditInfo : workRequestFileTransAuditList) {
if (fileTransAuditInfo.getFileEventType().equalsIgnoreCase(type1) ||
fileTransAuditInfo.getFileEventType().equalsIgnoreCase(type2)) {
workRequestFileTransAuditListforSubmission.add(fileTransAuditInfo);
}
}
return workRequestFileTransAuditListforSubmission;发布于 2017-03-01 03:01:26
与Java 8中的代码等效的代码是:
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。
发布于 2017-03-01 03:17:20
首先.stream() List,然后使用Stream#filter,最后使用collect连接到一个新的List。
通过使用helper函数,您可以减少过滤器测试的重复性。
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());https://stackoverflow.com/questions/42516622
复制相似问题