让我们假设我有一个包含List的类,例如
public static class ListHolder {
List<String> list = new ArrayList<>();
public ListHolder(final List<String> list) {
this.list = list;
}
public List<String> getList() {
return list;
}
}
Run Code Online (Sandbox Code Playgroud)
让我们进一步假设我有一个完整的这个类的实例列表:
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);
Run Code Online (Sandbox Code Playgroud)
现在我需要提取所有字符串以获取包含所有实例的所有字符串的字符串列表,例如:
[String 1, String 2, String 3, String 4]
Run Code Online (Sandbox Code Playgroud)
使用Guava,这将是这样的:
List<String> allString = FluentIterable
.from(holders)
.transformAndConcat(
new Function<ListHolder, List<String>>() {
@Override
public List<String> apply(final ListHolder listHolder) {
return listHolder.getList();
}
}
).toList();
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使用Java 8流API实现相同的目标?
use*_*037 14
List<String> allString = holders.stream()
.flatMap(h -> h.getList().stream())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这是一个关于收集展平的旧问题:(展平集合)
| 归档时间: |
|
| 查看次数: |
2223 次 |
| 最近记录: |