Java 如何转换列表<;A>;进入列表<;B>;?
如果A的定义如下:Java 如何转换列表<;A>;进入列表<;B>;?,java,list,guava,Java,List,Guava,如果A的定义如下: class A { List<B> bList; } A类{ 列表列表; } 如果给出了a的列表(列表列表),如何将其转换为包含列表中每个元素中存储的所有B的列表? 我想用番石榴来做这件事。这应该够了 ImmutableList<B> listOfBs = FluentIterable.from(listOfAs) .transformAndConcat(new Function<A, List<B>>(){
class A {
List<B> bList;
}
A类{
列表列表;
}
如果给出了a的列表(列表列表),如何将其转换为包含列表中每个元素中存储的所有B的列表?
我想用番石榴来做这件事。这应该够了
ImmutableList<B> listOfBs = FluentIterable.from(listOfAs)
.transformAndConcat(new Function<A, List<B>>(){
public List<B> apply(A a) {
return a.bList;
}
})
.toList();
ImmutableList listOfBs=FluentIterable.from(listOfAs)
.transformAndConcat(新函数(){
公开名单适用(A){
返回a.bList;
}
})
.toList();
这应该可以
ImmutableList<B> listOfBs = FluentIterable.from(listOfAs)
.transformAndConcat(new Function<A, List<B>>(){
public List<B> apply(A a) {
return a.bList;
}
})
.toList();
ImmutableList listOfBs=FluentIterable.from(listOfAs)
.transformAndConcat(新函数(){
公开名单适用(A){
返回a.bList;
}
})
.toList();
Java 8解决方案
我知道你想要一个番石榴解决方案,但这里有一个Java8版本供感兴趣的人使用
为每个a
项创建一个映射a.bList
的流,以馈送到映射函数中
List<B> bList = aList.stream().map(a -> a.bList).flatMap(b -> b.stream()).collect(Collectors.toList());
List bList=aList.stream().map(a->a.bList).flatMap(b->b.stream()).collect(Collectors.toList());
笔记
下面是一个类似的flatMap
:
此外,您还可以查看:
a
项创建一个映射a.bList
的流,以馈送到映射函数中
List<B> bList = aList.stream().map(a -> a.bList).flatMap(b -> b.stream()).collect(Collectors.toList());
List bList=aList.stream().map(a->a.bList).flatMap(b->b.stream()).collect(Collectors.toList());
笔记
下面是一个类似的flatMap
:
此外,您还可以查看:
reduce函数
。伪代码:a[].reduce=func(r,a){return r+a.b},[]
这样一个简单的任务,你真的应该先尝试一下你尝试了什么?最好用几行代码来完成。通过运行reduce函数
。pseudocode:a[].reduce=func(r,a){return r+a.b},[]
这么简单的任务,你真的应该先自己动手