5
Załóżmy, że mam klasę zawierającą listę, np.Co to jest odpowiednik java 8 dla transformAndConcat Guava?
public static class ListHolder {
List<String> list = new ArrayList<>();
public ListHolder(final List<String> list) {
this.list = list;
}
public List<String> getList() {
return list;
}
}
Chodźmy ponadto zakładać Mam całą listę wystąpień tej klasy:
ListHolder listHolder1 = new ListHolder(Arrays.asList("String 1", "String 2"));
ListHolder listHolder2 = new ListHolder(Arrays.asList("String 3", "String 4"));
List<ListHolder> holders = Arrays.asList(listHolder1, listHolder2);
I teraz muszę ekstraktu wszystkie ciągi aby uzyskać listę ciąg zawierający wszystkie ciągi wszystkich instancje, np .:
[String 1, String 2, String 3, String 4]
Z Guava miałoby to wyglądać tak:
List<String> allString = FluentIterable
.from(holders)
.transformAndConcat(
new Function<ListHolder, List<String>>() {
@Override
public List<String> apply(final ListHolder listHolder) {
return listHolder.getList();
}
}
).toList();
Moje pytanie brzmi jak mogę osiągnąć to samo z Java 8 strumienia API?
lub '.map (ListHolder :: getlist) .flatMap (Lista :: stream)' – assylias