Pour mieux comprendre la nouvelle API de flux, j'essaie de convertir un ancien code, mais je suis bloqué sur celui-ci.
public Collection<? extends File> asDestSet() {
HashMap<IFileSourceInfo, Set<File>> map = new HashMap<IFileSourceInfo, Set<File>>();
//...
Set<File> result = new HashSet<File>();
for (Set<File> v : map.values()) {
result.addAll(v);
}
return result;
}
Je n'arrive pas à créer un collecteur valide pour cela:
public Collection<? extends File> asDestSet() {
HashMap<IFileSourceInfo, Set<File>> map = new HashMap<IFileSourceInfo, Set<File>>();
//...
return map.values().stream().collect(/* what? */);
}
Utilisez flatMap :
return map.values().stream().flatMap(Set::stream).collect(Collectors.toSet());
Le flatMap
aplatit tous vos ensembles en un seul flux.