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()));
}
}
Mit FlatMap wird die Liste der Developer und deren Language Skills auf eine einzelne Liste reduziert.Beispiel Code
Sie finden das komplette Beispiel hier