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?