myList
.stream()
.map((question) -> {
question.setQuestionId(UUID.randomUUID().toString());
return question;
});
次のJavaコードはマップ機能には含まれていません。誰かがここで私が根本的に間違っていることを指摘してくれますか? myListは、いくつかの要素を持つArrayListです。Javaのリストマップ機能が動作しない
myList
.stream()
.map((question) -> {
question.setQuestionId(UUID.randomUUID().toString());
return question;
});
次のJavaコードはマップ機能には含まれていません。誰かがここで私が根本的に間違っていることを指摘してくれますか? myListは、いくつかの要素を持つArrayListです。Javaのリストマップ機能が動作しない
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()));
Javaのストリームは、遅延型です。つまり、結果が要求されるまで、map
のような変換は実行されません。ストリーム全体の結果を要求する通常の方法は、forEach
またはcollect
などの端末操作を使用することです。ターミナル操作なしで何も実行されません。
マップされた値で何もしないように指示していません。 – Holger