Ab Java 8 kann mit der forEach Methode über einen Stream iteriert werden und das mit Lambdas.
Hier mal eine Gegenüberstellung als JUnit Test:
@Test public void streamForEachVsForCollectionTest() { // Liste mit Mindmaps erstellen List<Mindmap> maps = new ArrayList<>(); // Mindmap 1 erstellen und der Liste hinzufügen Mindmap m1 = new Mindmap(); m1.setPath(Paths.get("mindmap-eins.itmz")); maps.add(m1); // Mindmap 2 erstellen und der Liste hinzufügen Mindmap m2 = new Mindmap(); m2.setPath(Paths.get("mindmap-zwei.itmz")); maps.add(m2); System.out.println("Altes iterieren mit for Schleife:"); List<Mindmap> ergebnis = new ArrayList<>(); // in for-Schleife Ergebnis anzeigen und Ergebnis der Liste hinzufügen for (Mindmap mindmap : maps) { System.out.println(mindmap); ergebnis.add(mindmap); } assertArrayEquals(maps.toArray(), ergebnis.toArray()); ergebnis.clear(); System.out.println("Neu mit Stream API von Java 8 iterieren:"); // iterieren mit forEach über eine Collection von Mindmaps und Lambda // expressions maps.stream().forEach(mindmap -> { System.out.println(mindmap); ergebnis.add(mindmap); }); assertArrayEquals(maps.toArray(), ergebnis.toArray()); }
Und das Mindmap BE:
package de.wenzlaff.mindmap.be; import java.nio.file.Path; import java.text.DateFormat; import java.util.Objects; /** * Eine Mindmap BE. * * @author Thomas Wenzlaff * */ public class Mindmap implements Comparable<Mindmap> { private Path path; public Path getPath() { return path; } public void setPath(Path path) { this.path = path; } public String getErstelldatum() { return DateFormat.getInstance().format(getPath().toFile().lastModified()); } /** * LIefert den Namen der Mindmap Datei. * * @return der Name der Datei. */ public String getName() { return getPath().getFileName().toString(); } /** * Liefert die Größe der Mindmap Datei in kB (1000). * * Im Template Aufruf z.B.: (${mindmap.size} kB) * * @return die Größe der Datei in kB. */ public String getSize() { return "" + getPath().toFile().length() / 1000; } @Override public int hashCode() { return Objects.hash(path); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Mindmap other = (Mindmap) obj; return Objects.equals(path, other.path); } /** * Der Name der Mindmap ohne Prefix. */ @Override public String toString() { return getName().substring(0, getName().length() - 5); } /** * Zum sortieren von A-Z nach Namen. */ @Override public int compareTo(Mindmap mindmap) { return getName().compareTo(mindmap.getName()); } }
Ähnliche Artikel:
- Generische Methoden
- Es muss ja nicht immer Apache Velocity sein, Apache FreeMarker™ tuts auch!
- Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?