1 解析 EXCEL 去重操作

描述:

  1. 最近在对业务进行实现时,遇到一个问题,就是针对于从EXCEL中读取数据后,如何先去除重复数据,然后再进行一系列的操作呢?

思考:

  1. 1 当时组长有提供一种思路,先对excel进行保存,然后再通过数据库的分组(group by)获取唯一的数据(请教之后告诉的一种思路,之前的操作上便是如此)<br /> 2 当时思考了一两天,自己有去通过treeSet 或者 HashMap去进行去重,但是都存在一些问题,无法满足实际的一个业务需求,后面在网上进行查找资料时,发现一种解题思路可以试一下,然后就直接编写代码进行尝试,满足当下的业务需求,就决定是他了。

实现:

  1. 通过双重for进行实现判断,在后者的属性与前者的属性一致时,可以对后者进行移除;<br /> 缺点:增加了空间开销<br /> 优点:减少了io操作,提高了效率

简单代码思路:

  1. package com.orange.test;
  2. import com.orange.student.Student;
  3. import org.apache.commons.lang3.StringUtils;
  4. import java.util.*;
  5. import java.util.stream.Collectors;
  6. public class Demo6 {
  7. public static void main(String[] args) {
  8. List<Student> list = new ArrayList<>();
  9. Student s = new Student("李四",18,"2022-02-16 12:00:35","1");
  10. Student s1 = new Student("张飞",19,"2022-02-18 12:00:35","2");
  11. Student s2 = new Student("张飞",19,"2022-02-18 12:00:35","3");// --
  12. Student s3 = new Student("张飞",19,"2022-02-18 12:00:35","4");// --
  13. Student s4 = new Student("张飞",19,"2022-02-18 12:00:35","5");// --
  14. Student s5 = new Student("张飞",19,"2022-02-18 12:00:35","6");// --
  15. Student s6 = new Student("王五",19,"","7");
  16. Student s7 = new Student("王五",19,"2022-02-18 12:00:35","8");
  17. Student s8 = new Student("王五",19,"2022-02-18 12:00:35","9");
  18. list.add(s);
  19. list.add(s1);
  20. list.add(s2);
  21. list.add(s3);
  22. list.add(s6);
  23. list.add(s4);
  24. list.add(s5);
  25. list.add(s8);
  26. list.add(s7);
  27. //去重
  28. for (int i = 0; i < list.size(); i++) //外循环是循环的次数
  29. {
  30. for (int j = list.size() - 1 ; j > i; j--) //内循环是 外循环一次比较的次数
  31. {
  32. if (list.get(i).getName().equals(list.get(j).getName()) && list.get(i).getAge() == list.get(j).getAge())
  33. {
  34. list.remove(j);
  35. }
  36. }
  37. }
  38. list.forEach(ss->{
  39. System.out.println(ss);
  40. });
  41. }
package com.orange.student;


public class Student {
    private String name;
    private int age;
    private String sendTime;
    private String completeTime;

    public Student() {
    }

    public Student(String name, int age, String sendTime, String completeTime) {
        this.name = name;
        this.age = age;
        this.sendTime = sendTime;
        this.completeTime = completeTime;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSendTime() {
        return sendTime;
    }

    public void setSendTime(String sendTime) {
        this.sendTime = sendTime;
    }

    public String getCompleteTime() {
        return completeTime;
    }

    public void setCompleteTime(String completeTime) {
        this.completeTime = completeTime;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sendTime='" + sendTime + '\'' +
                ", completeTime='" + completeTime + '\'' +
                '}';
    }
}

注意点:

        此次excel进行导入时,存在行号一起进行了导入,对于判断属性时,行号不应该在考虑的一个范围之内,而是针对其余属性进行考虑。