回答

收藏

关于使用Lambda 表达式,根据List中的对象的某个属性,求两个List的差集,

技术问答 技术问答 426 人阅读 | 0 人回复 | 2023-09-11

一、需求逻辑:
  c* O. h6 T! a3 {1.先取出所有的车辆信息listWithoutDuplicates,并去重(该List数据最全,元素均为CarVo);+ ~8 q/ F' U) _+ o. G
2.再从另一个表中取出车辆信息carForAdminList;(数据较少,元素均为CarForAdmin);
  K, N' `* D% N7 F0 ~5 p( h3.根据carForAdminList中的CarForAdmin车牌号是否存在于listWithoutDuplicates中为条件(即CarForAdmin.车牌号等于CarVo.车牌号),得出listWithoutDuplicates中多出的元素,并形成一个newTransferList; B4 A% y3 d: d0 d0 w) F
二、问题:' Z+ E0 u0 r$ J2 q# {
使用以下代码进行取差集:7 n& S/ R- e9 ~8 _4 x1 ]0 \/ Y

    1 I  e/ Z( ^. E% B' p1 K6 {, @
  • List<CarVo> listWithoutDuplicates = CarDao.pageVoList(param);
    % }' _  F" T, s5 }
  • List<CarForAdmin> carForAdminList = CarDao.pageList(param);
    7 [0 S. {( N' T3 e' L, A0 H9 P& o- R) L
  • List<CarVo> newTransferList = listWithoutDuplicates.stream().filter(m -> !carForAdminList.stream().map(d -> d.getCarNum().replace(&quot; &quot;,&quot;&quot;)).collect(Collectors.toList()).contains(m.getCarNum().replace(&quot; &quot;,&quot;&quot;))).collect(Collectors.toList());
    ; `. N2 ~; I1 j6 [  h
    4 E( ]" B; A) h. }, B& N8 U$ T' V; P
  • 运行后报错:java.lang.ClassCastException: java.util.HashMap cannot be cast to CarForAdmin;
    . Q5 ~1 @$ o! m8 h# m
7 Q/ k0 T4 ?7 t  }$ y+ ]

* x( c) v' c. Q3 [( t  @我知道答案 回答被采纳将会获得6 金钱 已有0人回答
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则