java8 List根据某个字段去重 支持多字段去重

根据List里的 i 和 s 字段,如果两个一样,就去重

代码很长,请耐心打完

List m = members.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getI()+";"+o.getS()))),ArrayList::new));

红色部分是我自己的,黑色的都是调用系统的

List m = members.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getI()+";"+o.getS()))),ArrayList::new));

我的测试代码

List members = new ArrayList<>();

Member member1 = new Member(1,"s",true,(long)2,3.0,(float)4.0,'c');

Member member2= new Member(1,"s",false,(long)3,4.0,(float)4.0,'c');

Member member3= new Member(2,"str",true,(long)2,3.0,(float)4.0,'c');

Member member4= new Member(2,"s",true,(long)2,3.0,(float)4.0,'c');

members.add(member1);

members.add(member2);

members.add(member3);

members.add(member4);

List m = members.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getI()+";"+o.getS()))),ArrayList::new));

for(Member i : m){

System.out.println(i.toString());

}

我的程序去重的规则是前两个元素如果一样就去掉其中一个( i 和 s 字段)

运行结果

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章