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

Ab Java 8 kann mit der forEach Methode über einen Stream iteriert werden und das mit Lambdas.

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

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:

  1. Generische Methoden
  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
Make a Girl: Neuer Trailer zeigt Theme-Song + Visual
wallpaper-1019588
Darwin’s Incident – Neuigkeiten zum Anime + Visual
wallpaper-1019588
There’s No Freaking Way I’ll Be Your Lover! Unless… – Anime-Adaption angekündigt + Teaser + Visual
wallpaper-1019588
Schöne und gesunde Haut Teil 3