我有订单流(来源是订单列表)。
每个订单都有一个客户和一个OrderLine列表。
我要实现的目标是在一张简单的列表中以客户为关键的地图,并将属于该客户的所有订单行作为值。
现在,通过执行以下操作,我现在管理的内容返回了Map<Customer>, List<Set<OrderLine>>>
:
orders
.collect(
Collectors.groupingBy(
Order::getCustomer,
Collectors.mapping(Order::getOrderLines, Collectors.toList())
)
);
我正在寻找直接从订单流中获取Map<Customer, List<OrderLine>>
的方法,或者通过某种方式将我上面获得的Map<Customer>, List<Set<OrderLine>>>
流中的列表弄平。
java参考方案
您可以简单地使用Collectors.toMap
。
就像是
orders
.stream()
.collect(Collectors
.toMap(Order::getCustomer
, Order::getOrderLines
, (v1, v2) -> { List<OrderLine> temp = new ArrayList<>(v1);
temp.addAll(v2);
return temp;});
toMap
函数的第三个参数是合并函数。如果您没有明确提供它,并且有重复的键,那么在完成操作时它将引发错误。
最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…
java:继承 - java有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…
Java-如何将此字符串转换为日期? - java我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…
JAVA:如何检查对象数组中的所有对象是否都是子类的对象? - java我有一个对象数组。现在,我要检查所有这些对象是否都是MyObject的实例。有没有比这更好的选择:boolean check = true; for (Object o : justAList){ if (!(o instanceof MyObject)){ check = false; break; } } java大神给出的解决方案 如果您不喜欢循环,则…
使用流处理异常 - java我有一个Map<String,List<String>>并希望它变成Map<String,List<Long>>,因为列表中的每个String都代表一个Long:Map<String,List<String>> input = ...; Map<String,List<Lon…