Java Quickie: Iterieren mit forEach über eine Collection (von Mindmaps) mit Lambda expressions und Filter

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 😉
Java Quickie: Iterieren mit forEach über eine Collection (von Mindmaps) mit Lambda expressions und Filter
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:

  1. Java Quickie: Iterieren mit forEach über eine Collection (von Mindmaps) mit Lambda expressions
  2. Es muss ja nicht immer Apache Velocity sein, Apache FreeMarker™ tuts auch!
  3. Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?

wallpaper-1019588
The Great Cleric: Serie wird auf Disc erscheinen
wallpaper-1019588
Why Raeliana Ended Up at the Duke’s Mansion: Disc-Release geplant
wallpaper-1019588
SHY: Anime erscheint als Gesamtausgabe auf Disc
wallpaper-1019588
86: Eighty Six – Anime erscheint auf Disc + Vorbestellung