如何将其合并到单个流?
List<Integer> Type1ErrorRows = errors.stream()
.filter(c -> (c.getClass() == Type1Error.class))
.map(c -> ((Type1Error) c).getRowNumber())
.collect(Collectors.toList());
List<Integer> Type2ErrorRows = errors.stream()
.filter(c -> (c.getClass() == Type2Error.class))
.map(c -> ((Type2Error) c).getRowNumber())
.collect(Collectors.toList());
流不是这项工作的正确工具。只需使用循环即可:
List<Integer> type1 = new ArrayList<Integer>();
List<Integer> type2 = new ArrayList<Integer>();
for (Error error : errors) {
if (error instanceof Type1Error e1) {
type1.add(e1.getRowNumber());
}
else if (error instanceof Type2Error e2) {
type2.add(e2.getRowNumber());
}
}