业务需求1:需要对前端入参进行某个字段或者多个字段去重操作,防止插入重复数据。
业务需求2:多条件下抓取数据列表,需要对数据列表的某个字段或者多个字段进行去重。
话不对多说,上代码
根据title和name字段去重。1、
list = list
.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(x -> x.getTitle() + x.getName()))), ArrayList::new));
2、 对前端下单的商品sku编号去重
orderList = orderList
.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(CreateOrderDto.Goods::getSkuNo))), ArrayList::new));
注:
使用了Java8两个获取字段的方式,第一种比较常用,类似前端的钩子函数,可读性比较明了,但是当你检测哪个字段被哪里地方被引用时,这样写的字段不会被检测到。
个人推荐用第二种,代码比较简洁,而且你检测字段时,这个字段也会被检测到被使用,最主要是idea不报黄色提示了哈哈哈。