数据去重复的几种方式

数据去重复的几种方式

数据去重复的几种方式

  • Set集合的天性

场景一:

public void show(){
    List<STudent>list=new ArrayList<>();
    ......
    Set<STudent> set=new TreeSet<>(list);
    list.clear();
    list=new ArrayList(set);
}

场景二:

public void show(){
    List<STudent>list=new ArrayList<>();
    List<Student>newList=new ArrayList<>();
    ......
    Set<STudent> set=new HashSet<>();
    ...遍历....
        if(set.add(stu)){
            newList.add(stu);
        }
     }
    ....持久层操作...
}
  • 对象重写HashCode和Equals

实体:

package com.skylon.fddp.data.eums;

import lombok.Data;

import java.util.Objects;

@Data
public class Student {
    private String name;
    private Integer age;
    private Double hight;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(name, student.name) && Objects.equals(age, student.age) && Objects.equals(hight, student.hight);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age, hight);
    }
}

案例:

@Test
public void sss() {
    Student stu = new Student();
    stu.setName("张三");
    stu.setAge(11);
    stu.setHight(56.6);
    Student stu1 = new Student();
    stu1.setName("李四");
    stu1.setAge(11);
    stu1.setHight(56.6);
    System.out.println(stu.hashCode()+":"+stu1.hashCode());
    List<Student>list=new ArrayList<>();
    ....fori.....
    if(stu1.hashCode()!=stu.hashCode()){
        list.add();
    }

}
  • 按照成员属性(比较常用一些)

考勤案例:

成员属性有:

姓名:

年龄

性别

上班时间

....流分组之后生成List集合....
    List<STudent>newList=new ArrayList<>();
    Map<String,List<Student>> map=.....;

//排序
    if(list.size()>=2){
        newList.add(list.get(0));
    }else{
        newList.addAll(list)
    }
  • 按照时间戳去重(正在抓紧敢)

因为时间戳重复率比较低

考勤案例:

成员属性有:

姓名:

年龄

性别

上班时间

....流分组之后生成List集合....
    List<STudent>newList=new ArrayList<>();
    Map<String,List<Student>> map=.....;

//排序
    if(list.size()>=2){
        newList.add(list.get(0));
    }else{
        newList.addAll(list)
    }
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容