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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
@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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
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()); } } |