一、需求逻辑:
1.先取出所有的车辆信息listWithoutDuplicates
,并去重(该List数据最全,元素均为CarVo
);
2.再从另一个表中取出车辆信息carForAdminList
;(数据较少,元素均为CarForAdmin
);
3.根据carForAdminList
中的CarForAdmin
车牌号是否存在于listWithoutDuplicates
中为条件(即CarForAdmin
.车牌号等于CarVo
.车牌号),得出listWithoutDuplicates
中多出的元素,并形成一个newTransferList
;
二、问题:
使用以下代码进行取差集:
List<CarVo> listWithoutDuplicates = CarDao.pageVoList(param);
List<CarForAdmin> carForAdminList = CarDao.pageList(param);
List<CarVo> newTransferList = listWithoutDuplicates.stream().filter(m -> !carForAdminList.stream().map(d -> d.getCarNum().replace(" ","")).collect(Collectors.toList()).contains(m.getCarNum().replace(" ",""))).collect(Collectors.toList());
运行后报错:java.lang.ClassCastException: java.util.HashMap cannot be cast to CarForAdmin
;
Java Streaming API 提供了三个方法用于判断集合是否满足条件:
下面是一个适合你的场景的实际例子,看完你就知道该怎么写了: