Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将具有列表属性的对象列表转换为包含所有列表属性项的列表_Java_Guava - Fatal编程技术网

Java 如何将具有列表属性的对象列表转换为包含所有列表属性项的列表

Java 如何将具有列表属性的对象列表转换为包含所有列表属性项的列表,java,guava,Java,Guava,我有一个物体像: class House { String name; List<Door> doors; } 阶级之家{ 字符串名; 列出门; } 我想做的是将列表转换为列表,其中包含所有房屋的门 有机会用番石榴做这个吗 我尝试使用guava used List.transform函数,但结果只得到了一个列表。您不需要guava(假设我理解正确): 可以很好地完成这项工作。如果您确实需要使用功能性方法,您可以使用: 公共静态不可变列表foo(列表屋){ 可

我有一个物体像:

class House {

    String name;

    List<Door> doors;

}
阶级之家{
字符串名;
列出门;
}
我想做的是将
列表
转换为
列表
,其中包含所有
房屋的

有机会用番石榴做这个吗


我尝试使用guava used List.transform函数,但结果只得到了一个
列表。

您不需要guava(假设我理解正确):


可以很好地完成这项工作。

如果您确实需要使用功能性方法,您可以使用:

公共静态不可变列表foo(列表屋){
可回流
.来自(房屋)
.transformAndConcat(GetDoorsFunction.INSTANCE)
.toImmutableList();
}
私有枚举GetDoorsFunction实现函数{
实例;
@凌驾
公共列表应用(房屋输入){
返回输入。getDoors();
}
}
final List<Door> doorsFromAllHouses = Lists.newArrayList();
for (final House house : houses) {
  doorsFromAllHouses.addAll(house.doors);
}
// and doorsFromAllHouses is full of all kinds of doors from various houses
List<Door> doors = reduce(
  houses,                                  // collection to reduce from
  new ArrayList<Door>(),                   // initial accumulator value
  house, acc -> acc.addAll(house.doors));  // reducing function
FluentIterable.from(listOfHouses).transformAndConcat(doorFunction)
public static ImmutableList<Door> foo(List<House> houses) {
    return FluentIterable
            .from(houses)
            .transformAndConcat(GetDoorsFunction.INSTANCE)
            .toImmutableList();
}

private enum GetDoorsFunction implements Function<House, List<Door>> {
    INSTANCE;

    @Override
    public List<Door> apply(House input) {
        return input.getDoors();
    }
}