2017-08-25 14 views
1

私はCarクラスを持っています、各CarクラスにはWheelクラスのリストがあり、各Wheelクラスには整数フィールドairPressureがあります。Java 8でラムダフィルタストリーム内のリストを反復する方法は?

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) 
    ... 

車をフィルタリングするときに各車の車輪を繰り返しますか?

+0

をlist-way-to-iterate-through-loop /)howtoページ? –

答えて

0

これはdefaultValue以下のすべての車輪空気の圧力を有する唯一の車を選択します。[この](http://crunchify.com/how-to-iterate-through-java-を見てください

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

あなたの答えをありがとう。すべての車のすべての車輪の空気圧の最大値を見つける最も簡単な方法は何ですか? – cuegod

+0

'cars.stream()。map(Car :: getWheels).flatMap(List :: stream).mapToInt(Wheel :: getAirPressure).max()' – shmosel

+0

それは仕事です。ありがとうございました! – cuegod

関連する問題