如何在同一个流中使用多个filter+map?

问题描述 投票:0回答:1

如何将其合并到单个流?

    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());
java filter stream
1个回答
0
投票

流不是这项工作的正确工具。只需使用循环即可:

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());
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.