我有一个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)
  ...


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

最佳答案

这将仅选择所有车轮气压低于defaultValue的汽车:

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

关于java - 如何在Java 8中的lambda过滤器流中迭代列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45874212/

10-17 02:51