如何转换列表<a> into List<b>?</b></a>

时间:2015-03-13 10:02:37

标签: java list guava

如果A定义如下:

class A {
    List<B> bList;
}

如果给出A列表(列表aList),我怎样才能将它转换为包含存储在aList中每个元素中的所有B的List? 我想用番石榴来做这件事。

2 个答案:

答案 0 :(得分:5)

这应该成功。

ImmutableList<B> listOfBs = FluentIterable.from(listOfAs)
  .transformAndConcat(new Function<A, List<B>>(){
      public List<B> apply(A a) {
        return a.bList;
      }
   })
   .toList();

答案 1 :(得分:1)

Java 8解决方案

我知道你想要一个Guava解决方案,但这里有一个Java 8版本供所有感兴趣的人使用。

为每个A.bList项创建一个映射A的流,以提供给映射函数。

List<B> bList = aList.stream().map(a -> a.bList).flatMap(b -> b.stream()).collect(Collectors.toList());

备注

以下是flatMapJava 8 flatMap Example的类似示例。

另外,你可以看看: