2017-12-26 34 views
2

を使用してリストをフィルタリング私はProjectクラスを持っている:のJava 8のラムダ式に

class Project { 
    List<Name> names; 
    int year; 
    public List<Name> getNames(){ 
     return names; 
    } 
} 

その後、私は私がList<Project>を持っているし、年に基づいてプロジェクトのリストをフィルタリングして取得する必要があり、別の主な機能を持っています名前リストが結果として表示されます。

あなたはjava 8ラムダ式を使用してそれを行う方法を教えてもらえますか?

おかげで

+4

書かれていますJava 8の機能を使用します。ストリームとラムダを使用するのに役立ちます。 – luk2302

答えて

5

さて、あなたは、正確なフィルタリング条件を述べなかったが、あなたはその年によって要素をフィルタリングしたいと仮定すると:あなたはせず、既にやろうとしているもの

List<Name> names = projects.stream() 
    .filter(p -> p.getYear() == someYear) // keep only projects of a 
             // given year 
    .flatMap(p -> p.getNames().stream()) // get a Stream of all the 
             // Names of all Projects 
             // that passed the filter 
    .collect(Collectors.toList());  // collect to a List 
関連する問題