Wir werden die Listenkonvertierung vergleichen, wenn wir die for-Anweisung verwenden und wenn wir die Stream-Map verwenden. Verwenden Sie die Liste unten.
stream-map.java
final List<String> months =
Arrays.asList("January", "February", "March", "April", "May", "June", "July", "Augast", "September", "October", "November", "December");
Erstellen Sie eine Liste, die nur aus dem ersten Buchstaben jedes Elements besteht.
Wir deklarieren eine leere Liste, um das erste Zeichen zu speichern und es zeichenweise in der for-Schleife zu speichern.
for.java
final List<String> firstChars = new ArrayList<>();
for (String c : months) {
firstChars.add(c.substring(0,1));
}
for (String fc : firstChars) {
System.out.print(fc);
}
Die Ausgabe ist wie folgt. JFMAMJJASOND
Obwohl es als Funktionstyp neu geschrieben wurde, muss der Programmierer eine leere Liste erstellen.
forEach.java
final List<String> firstChars = new ArrayList<>();
months.forEach(c -> firstChars.add(c.substring(0,1)));
firstChars.forEach(System.out::print);
Es gibt keinen Schritt, um eine leere Liste vorzubereiten, und das Ergebnis des Extrahierens des ersten Zeichens aus der Liste scheint so wie es ist in der neuen Liste gespeichert zu sein. Die map () -Methode von Stream konvertiert zusammenhängende Eingaben in zusammenhängende Ausgaben.
stream-map.java
final List<String> firstChars = months.stream().map(c -> c.substring(0,1)).collect(Collectors.toList());
firstChars3.forEach(System.out::print);
Die map () -Methode garantiert, dass die Liste der Eingaben und die Liste der Ausgaben dieselbe Anzahl von Elementen aufweisen, jedoch nicht unbedingt für die Datentypen. Wenn Sie die Anzahl der Zeichen in jedem Element ermitteln möchten, wird es vom Zeichenfolgentyp in den numerischen Typ konvertiert und ausgegeben.
Im Folgenden wird die konvertierte Liste nicht vorbereitet, sondern der Inhalt des Elements direkt mit forEach ausgegeben. Auf dieser Ebene ist es möglich, in einer Zeile zu beschreiben.
stream-map2.java
months.stream().map(c -> c.length()).forEach(cnt -> System.out.print(cnt + " "));
//Ausgabe als 7 8 5 5 3 4 4 6 9 7 8 8
Recommended Posts