如果你我的项目用java8,那有一个很简略的解决list中依据某属性的值去重的办法,就是应用lamba函数式,例子代码如下:
List<UcShopCourseBizPojo> unique = ucShopCourseBizPojoList.stream().collect( collectingAndThen( toCollection(() -> new TreeSet<>(comparingLong(UcShopCourseBizPojo::getId))), ArrayList::new));
其中comparingLong办法是因为pojo类UcShopCourseBizPojo中,依据的id去重,而id这个属性的数据类型是Long,这个办法能够替换成更广泛的办法,例子代码如下:
List<UcShopCourseBizPojo> sLists = shopCourseLists.stream().collect( Collectors.collectingAndThen(Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(c -> c.getShopId()))), ArrayList::new) );
然而这种滤重的办法有个毛病,就是获取的list可能每回返回的后果是随机的,比方获取门店课程list,去重雷同shopid的课程,如果两个课程shopid雷同,则可能每次调用的时候一会返回这个课程,一会返回另一个课程,不晓得底层是什么起因造成的,提出这个办法仅供参考,如果有晓得起因的也能够留言~