在 Java 8 中映射后过滤空值

2022-09-02 09:17:44

我是使用Java 8的新手。我目前正在将库用于某些ML算法。我有以下代码:mapfiltersSpark ML

// return a list of `Points`.
List<Points> points = getPoints();
List<LabeledPoint> labeledPoints = points.stream()
                                        .map(point -> getLabeledPoint(point))
                                        .collect(Collectors.toList());

如果数据正确或为 null,则该函数返回一个新的。如何过滤(删除)之后的对象?getLabeledPoint(Point point)LabeledPointnullLabeledPointmap


答案 1

流上有过滤方法:

// return a list of `Points`.
List<Points> points = getPoints();
List<LabeledPoint> labeledPoints = points.stream()
                                    .map(point -> getLabeledPoint(point))
                                    // NOTE the following:
                                    .filter(e -> e != null)
                                    .collect(Collectors.toList());

答案 2

推荐