展平地图中的列表列表 - java

我有订单流(来源是订单列表)。
每个订单都有一个客户和一个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中的“ <<”运算符 - java

最喜欢的语句来自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…