如何在Java 8中迭代lambda过滤器流中的列表?

时间:2017-08-25 03:54:56

标签: java loops lambda

我有一个Car类,每个Car类都有一个Wheel类列表,每个Wheel类都有一个整数字段airPressure。

public class Car {
  private List<Wheel> wheels;
  public List<Wheel> getWheels() {
    return wheels;
  }
}

public class Wheel {
  private int airPressure;
  public int getAirPressure() {
    return airPressure;
  }
}

现在我有一个汽车列表,我必须过滤掉任何车轮的气压大于defaultValue的车辆。我正在过滤汽车,但我需要遍历所有车轮。现在我有这样的代码:

I have: List<Cars> cars, int defaultValue
List<Cars> filteredCars = cars.stream()
  .filter(car -> car.getWheels().get(0).getAirPressure() < defaultValue)
  .filter(car -> car.getWheels().get(1).getAirPressure() < defaultValue)
  .filter(car -> car.getWheels().get(2).getAirPressure() < defaultValue)
  ...

过滤汽车时如何迭代每辆车的车轮?

1 个答案:

答案 0 :(得分:0)

这将只选择带有所有车轮的车辆。气压低于defaultValue

List<Car> filteredCars = cars.stream()
        .filter(car -> car.getWheels()
                .stream()
                .allMatch(wheel -> wheel.getAirPressure() < defaultValue))
        .collect(Collectors.toList());