flatMap Developer Language Skills
Klasse Developer
Eine Software Team besteht aus mehreren Entwicklern mit unterschiedlichen Kenntnissen von einer oder mehrerer Programmiersprachen. Jeder Entwickler wird über die Klasse ch.std.jpf2.lambda.flatmap.Developer abgebildet:
package ch.std.jpf2.lambda.flatmap;
import java.util.HashSet;
import java.util.Set;
public class Developer {
  private String name;
  private Set languages;
  public Developer(String name) {
    this.languages = new HashSet<>();
    this.name = name;
  }
  public void add(String language) {
    this.languages.add(language);
  }
  public Set getLanguages() {
    return languages;
  }
  public String getName() {
    return name;
  }
}  Flatmap Unit Test
Der folgende Unit Test zeigt die flatMap Anwendung:
package ch.std.jpf2.lambda.flatmap.test;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Test;
import ch.std.jpf2.lambda.flatmap.Developer;
public class FlatMapTest {
  @Test
  public void flatMap() {
    List<Developer> team = new ArrayList<>();
    Developer polyglot = new Developer("esoteric");
    polyglot.add("clojure");
    polyglot.add("scala");
    polyglot.add("groovy");
    polyglot.add("go");
    Developer busy = new Developer("pragmatic");
    busy.add("java");
    busy.add("javascript");
    team.add(polyglot);
    team.add(busy);
    List<String> teamLanguages = team.stream().
        map(d -> d.getLanguages()).
        flatMap(l -> l.stream()).
        collect(Collectors.toList());
    assertTrue(teamLanguages.containsAll(polyglot.getLanguages()));
    assertTrue(teamLanguages.containsAll(busy.getLanguages()));
  }
}Beispiel Code
Sie finden das komplette Beispiel hier
