2016-07-01 4 views
0
myList 
.stream() 
.map((question) -> {      
    question.setQuestionId(UUID.randomUUID().toString()); 
    return question; 
}); 

次のJavaコードはマップ機能には含まれていません。誰かがここで私が根本的に間違っていることを指摘してくれますか? myListは、いくつかの要素を持つArrayListです。Javaのリストマップ機能が動作しない

+0

マップされた値で何もしないように指示していません。 – Holger

答えて

2

java.util.stream.Stream.mapのドキュメントを見ると、このメソッドが新しいストリームを返すことがわかります。あなたがあなたの元のリストを維持する必要がある場合は、この方法を使用して、新しいリストに結果保存:

List<...> newList = myList 
        .stream() 
        .map(question -> {      
         question.setQuestionId(UUID.randomUUID().toString()); 
         return question; 
        }) 
        .collect(Collectors.toList()); 

あなたは自分の元のリストを変更する必要がある場合、List以来道具Iterableを、あなたはjava.lang.Iterable.forEachを使用することができます。

myList.forEach(question -> question.setQuestionId(UUID.randomUUID().toString())); 
2

Javaのストリームは、遅延型です。つまり、結果が要求されるまで、mapのような変換は実行されません。ストリーム全体の結果を要求する通常の方法は、forEachまたはcollectなどの端末操作を使用することです。ターミナル操作なしで何も実行されません。

関連する問題