2017-09-27 7 views
2

入力として機能するターミナル機能がありますか?下の例のように、内部ループがあり、応答を返します。応答を外部のリストに入れるのではなく、内部のループが応答を収集して送信したかったのです。Javaの入力としてマップを取るターミナルストリーム操作8

私はそれが何か欲しかっ
List<A> consignments = Lists.emptyList(); 
    IntStream.range(0, days) 
      .mapToObj(startDate::plusDays) 
      .forEach(day -> IntStream.range(0, hours) 
        .forEach(hour -> consignments.add(myfunction())) 
      ); 

:forEachのは消費者であるので、そのままでは

List<A> consignments = IntStream.range(0, days) 
      .mapToObj(startDate::plusDays) 
      .forEach(day -> IntStream.range(0, hours) 
        .mapToObj(hour -> myFunction()) 
        .collect(toList())); 

、これは動作しませんので、我々はそれを達成するためにいくつかの簡単な方法がありますか、私が行方不明ですどの?

答えて

4

私が正しくあなたの意図を理解していれば、flatMapは動作するはずです:

List<A> consignments = 
    IntStream.range(0, days) 
      .mapToObj(startDate::plusDays) 
      .flatMap(day -> IntStream.range(0, hours) 
             .mapToObj(hour -> myFunction())) 
      .collect(toList()); 
関連する問題