栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

解析 EXCEL 去重

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解析 EXCEL 去重

1 解析 EXCEL 去重操作

描述:

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

思考:

1 当时组长有提供一种思路,先对excel进行保存,然后再通过数据库的分组(group by)获取唯一的数据(请教之后告诉的一种思路,之前的操作上便是如此)

2 当时思考了一两天,自己有去通过treeSet 或者 HashMap去进行去重,但是都存在一些问题,无法满足实际的一个业务需求,后面在网上进行查找资料时,发现一种解题思路可以试一下,然后就直接编写代码进行尝试,满足当下的业务需求,就决定是他了。

实现:

通过双重for进行实现判断,在后者的属性与前者的属性一致时,可以对后者进行移除;

缺点:增加了空间开销

优点:减少了io操作,提高了效率

简单代码思路:
package com.orange.test;

import com.orange.student.Student;
import org.apache.commons.lang3.StringUtils;

import java.util.*;
import java.util.stream.Collectors;

public class Demo6 {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        Student s = new Student("李四",18,"2022-02-16 12:00:35","1");
        Student s1 = new Student("张飞",19,"2022-02-18 12:00:35","2");
        Student s2 = new Student("张飞",19,"2022-02-18 12:00:35","3");// --
        Student s3 = new Student("张飞",19,"2022-02-18 12:00:35","4");// --
        Student s4 = new Student("张飞",19,"2022-02-18 12:00:35","5");// --
        Student s5 = new Student("张飞",19,"2022-02-18 12:00:35","6");// --
        Student s6 = new Student("王五",19,"","7");
        Student s7 = new Student("王五",19,"2022-02-18 12:00:35","8");
        Student s8 = new Student("王五",19,"2022-02-18 12:00:35","9");

        list.add(s);
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s6);
        list.add(s4);
        list.add(s5);
        list.add(s8);
        list.add(s7);
        //去重
        for (int i = 0; i < list.size(); i++)  //外循环是循环的次数
        {
            for (int j = list.size() - 1 ; j > i; j--)  //内循环是 外循环一次比较的次数
            {

                if (list.get(i).getName().equals(list.get(j).getName()) && list.get(i).getAge() == list.get(j).getAge())
                {
                    list.remove(j);
                }

            }
        }
        list.forEach(ss->{
            System.out.println(ss);
        });
    }

 

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进行导入时,存在行号一起进行了导入,对于判断属性时,行号不应该在考虑的一个范围之内,而是针对其余属性进行考虑。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854868.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号