Wenn man mit Lambda über eine Collection iteriert, kann man auch gleich einen Filter verwenden. Was das mit der 20 zu tun hat, kommt am 1.12.2018 hier auf dem Blog 😉
Jetzt aber hier erst mal ein Beispiel zum Filter:
@Test public void streamForEachFilterTest() { List<Mindmap> maps = getTestMindmaps(); assertEquals(3, maps.size()); List<Mindmap> ergebnis = new ArrayList<>(); System.out.println("Neu mit Stream API von Java 8 iterieren inkl. Filter:"); // iterieren mit forEach über eine Collection von Mindmaps und Lambda // expressions inkl. Filter maps.stream() // der Stream .filter(mindmap -> mindmap.getName().contains("zwei")) // mit dem Filter, alle Mindmaps die zwei im Namen enthalten .forEach(mindmap -> { // über die gefundenen gefilterteten Mindmaps System.out.println("Mindmap die (zwei) enthält: " + mindmap); ergebnis.add(mindmap); }); assertEquals(1, ergebnis.size()); } private List<Mindmap> getTestMindmaps() { // 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); // Mindmap 3 erstellen und der Liste hinzufügen Mindmap m3 = new Mindmap(); m3.setPath(Paths.get("mindmap-drei.itmz")); maps.add(m3); return maps; }
Und die nötige Mindmap BE Klasse:
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:
- Java Quickie: Iterieren mit forEach über eine Collection (von Mindmaps) mit Lambda expressions
- Es muss ja nicht immer Apache Velocity sein, Apache FreeMarker™ tuts auch!
- Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?