Wie lassen sich mit den neuen Funktionen von Java 8 alle Werte eines List<String>
am einfachsten umwandeln?
In Anbetracht dessen:
List<String> words = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
Ich mache gerade das:
for (int n = 0; n < words.size(); n++) {
words.set(n, words.get(n).toUpperCase());
}
Wie kann die neue Lambdas, Collections und Streams-API in Java 8 helfen:
werte vor Ort umwandeln (ohne neue Liste zu erstellen)
wandeln Sie die Werte in eine neue Ergebnisliste um.
Das ist was ich mir ausgedacht habe:
In Anbetracht der Liste:
List<String> keywords = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
Vielleicht vermisse ich es, es scheint keine "Apply" - oder "Compute" -Methode zu geben, die ein Lambda für List benötigt. Dies ist also das gleiche wie bei altem Java. Ich kann mir mit Java 8 keinen prägnanteren oder effizienteren Weg vorstellen.
for (int n = 0; n < keywords.size(); n++) {
keywords.set(n, keywords.get(n).toUpperCase());
}
Obwohl es diesen Weg gibt, der nicht besser als die for (..) - Schleife ist:
IntStream.range(0,keywords.size())
.forEach( i -> keywords.set(i, keywords.get(i).toUpperCase()));
List<String> changed = keywords.stream()
.map( it -> it.toUpperCase() ).collect(Collectors.toList());
Möglicherweise verwenden Sie das neue Stream-Konzept in Sammlungen:
List<String> keywords = Arrays.asList("Apple", "Ananas", "Mango", "Banana", "Beer");
//(1)
keywords = keywords.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
//(2)
List<String> uppercaseKeywords = keywords.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());