У меня есть ситуация, когда я хочу извлечь несколько значений из нескольких исходных объектов в коллекцию. Я попытался добиться этого с помощью преобразования Guava, но столкнулся с проблемой, что я получаю коллекцию коллекций, которую мне нужно «сплющить» вручную. Есть ли хороший способ вернуть результаты прямо в плоскую коллекцию?
private static final Function<Target, Collection<Integer>> EXTRACT_FUNCTION = new Function<SourceObject, Collection<Integer>>() {
@Override
public Collection<Integer> apply(SourceObject o) {
// extract and return a collection of integers from o
return Lists.newArrayList(..);
}
};
Collection<SourceObject> sourceObjects = ...
Collection<Collection<Integer>>> nestedResults = transform(sourceObjects, EXTRACT_FUNCTION);
// Now I have to manually flatten the results by looping and doing addAll over the nestedResults..
// Can this be avoided?
Collection<Integer> results = flattenNestedResults(nestedResults);