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?
