将单个流拆分为两个列表
Split a single stream into two lists
给定一个流 Stream<Acknowledgement> mappedRecords
,我如何根据两个过滤器将其分成两个列表?这是我的尝试:
List<Acknowledgement> summaryList =
mappedRecords
.filter(x -> x.getReportType().equals(summaryReportType))
.collect(Collectors.toList());
List<Acknowledgement> detailList =
mappedRecords
.filter(x -> x.getReportType().equals(detailReportType))
.collect(Collectors.toList());
此代码产生错误:
java.lang.IllegalStateException: stream has already been operated upon
or closed
您描述的特定过滤器建议使用一种非常简洁的方法,实际上:
Map<ReportType, List<Acknowledgement>> lists = mappedRecords.collect(
Collectors.groupingBy(x -> x.getReportType()));
List<Acknowledgement> summaryList = lists.get(summaryReportType);
List<Acknowledgement> detailList = lists.get(detailReportType);
给定一个流 Stream<Acknowledgement> mappedRecords
,我如何根据两个过滤器将其分成两个列表?这是我的尝试:
List<Acknowledgement> summaryList =
mappedRecords
.filter(x -> x.getReportType().equals(summaryReportType))
.collect(Collectors.toList());
List<Acknowledgement> detailList =
mappedRecords
.filter(x -> x.getReportType().equals(detailReportType))
.collect(Collectors.toList());
此代码产生错误:
java.lang.IllegalStateException: stream has already been operated upon or closed
您描述的特定过滤器建议使用一种非常简洁的方法,实际上:
Map<ReportType, List<Acknowledgement>> lists = mappedRecords.collect(
Collectors.groupingBy(x -> x.getReportType()));
List<Acknowledgement> summaryList = lists.get(summaryReportType);
List<Acknowledgement> detailList = lists.get(detailReportType);