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