stream 流处理 Java 集合遇到的异常

java.lang.IllegalStateException: Duplicate key 异常

异常原因:Key值重复
结局办法:在 stream 中进行逻辑处理,如果key重复,取哪一个值。
从执行结果来看,对于重复的key,对他的value可以有三种取值情况:

  • (k1, k2) -> k1,取第一个值
  • (k1, k2) -> k2),取第二个值
  • (k1, k2) -> k1 + k2),对两个值做某些操作后取结果。(例如基本类型可以进行加减乘除)。

例:

1
Map<String, int> priceMap = pmOrders.stream().collect(Collectors.toMap(PmOrder::getOrderNo, PmOrder::getPrice,(v1,v2)->v1));

Stream Collectors.toMap NullPointerException 异常

异常原因:HashMap 中的 value 值 null
原本以为:HashMap中k,v都是可以存null值,但实际是 value 值不能为空,为 null 时会报错 NullPointerException。
结局办法:在进行 Collectors.toMap 前,先通过过滤器将空值排除或是通过map操作进行对应数据的转换。

------ 本文结束------