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

Folgende Java-Code wird nicht in die Map-Funktion. Kann mir bitte jemand sagen, was ich hier grundsätzlich falsch mache? myList ist eine ArrayList mit einigen Elementen.Java List Map funktioniert nicht

+0

Sie haben nichts mit dem abgebildeten Wert angegeben. – Holger

Antwort

2

Wenn Sie sich die Dokumentation für java.util.stream.Stream.map ansehen, sehen Sie, dass diese Methode einen neuen Stream zurückgibt. Wenn Sie Ihre ursprüngliche Liste zu halten brauchen, diese Methode verwenden und die Ergebnisse in einer neuen Liste speichern:

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

Wenn Sie nur Ihre ursprüngliche Liste ändern müssen, da List Arbeitsgeräte Iterable, können Sie java.lang.Iterable.forEach verwenden:

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

Streams in Java sind faul. Dies bedeutet, dass keine Umwandlung wie map ausgeführt wird, bis die Ergebnisse angefordert werden. Die übliche Art, das Ergebnis des gesamten Streams anzufordern, besteht darin, eine Terminaloperation zu verwenden, beispielsweise forEach oder collect. Ohne Terminal-Operation wird nichts ausgeführt.