2017-10-31 18 views
1

は、このグループのコードを考える:変更する簡潔な方法を何グループによって、その値の要素を変換簡潔

List<Input> inputs = getInputs(); 
Map<LocalDateTime, List<Input>> inputsByDate = 
    inputs.stream() 
     .collect(
     groupingBy(input -> input.getDateTime())); 

をするように私たちすることができます我々が持つ機能を介して入力を実行し、各マップキーList<Output>、用出力署名private Output convertToOutput(Input input) {}

OutputクラスにはgetDateTimeメソッドがないため、最初に実行する必要がありますが、変換されていないオブジェクトは必要ありません。変換されたオブジェクトが必要です。

GroupByメソッドでFunc<TSource, TElement> elementSelectorが得られるので、値の部分を変換できるので、C#Linq-To-Objectsでは簡単です。カスタムコードがたくさんなくても、これをJavaで簡単にどのように行うことができますか?

答えて

2

使用Collectors.mapping

// ... 
.collect(
    Collectors.groupingBy(
     input -> input.getDateTime()), 
     Collectors.mapping( // <--- This 
      TheClass::convertToOutput, 
      Collectors.toList()); 
関連する問題