gpt4 book ai didi

java - java 8 相当于 Guava 的 transformAndConcat 是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:43 25 4
gpt4 key购买 nike

假设我有一个包含列表的,例如

 public static class ListHolder {
List<String> list = new ArrayList<>();

public ListHolder(final List<String> list) {
this.list = list;
}

public List<String> getList() {
return list;
}
}

我们进一步假设我有一个这个类实例的完整列表:

    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);

现在我需要提取所有字符串以获得包含所有实例的所有字符串的字符串列表,例如:

[String 1, String 2, String 3, String 4]

对于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();

我的问题是如何使用 Java 8 流 API 实现相同的目的

最佳答案

List<String> allString = holders.stream()
.flatMap(h -> h.getList().stream())
.collect(Collectors.toList());

这是一个关于集合展平的老问题:( Flattening a collection )

关于java - java 8 相当于 Guava 的 transformAndConcat 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com