[英]How to convert List of Objects into Map<Object, Object> using Java 8 Lambdas
[英]Convert List of List of Object to a map - using lambdas in java 8
我有如下的对象结构:
Order {
int code;
int id;
List<Item>;
}
Item {
int code;
int quantity;
List<Suborder>;
}
Suborder {
int code;
int quantity;
}
我有一个对象O,我想要一个从代码到B的映射。执行此操作的正确方法是什么?
我试过了
1-不工作
order.getOrderItems().stream().flatMap(l -> l.getOrderItemSuborder().stream()).collect(Collectors.toMap(x -> x.getCode() , Function.identity())); // x.getCode() seems to be not available here :(
2-工作
order.getOrderItems().forEach(x -> x.getOrderItemSuborder().forEach(y -> suborderMap.put(y.getCode(),y)));
我不确定#2是否是正确的方法。
我如何才能使#1正常工作?
PS:以lambdas开头,可能是一个愚蠢的问题,但我不知道这是否是:p
据我了解,我认为您需要这样的东西
O order;
order.getAList().stream()
.flatMap(a -> a.getBList().stream())
.collect(toMap(b -> b.getCode(), b -> b));
第一次尝试时,您需要的是b -> b
,我认为您错过了lambda中收集地图的那部分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.