Java 如何转换列表<;A>;进入列表<;B>;?

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>>(){

如果A的定义如下:

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

此外,您还可以查看:

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

此外,您还可以查看:


您尝试过什么?最好只使用几行代码。通过运行
reduce函数
。伪代码:
a[].reduce=func(r,a){return r+a.b},[]
这样一个简单的任务,你真的应该先尝试一下你尝试了什么?最好用几行代码来完成。通过运行
reduce函数
。pseudocode:
a[].reduce=func(r,a){return r+a.b},[]
这么简单的任务,你真的应该先自己动手