【问题标题】:Remove duplicates from CSV file in eclipse从 Eclipse 中的 CSV 文件中删除重复项
【发布时间】:2015-02-08 03:18:31
【问题描述】:

我有一个任务,我必须读取一个 CSV 文件,其中包含一些重复行的数据。如何删除重复值并仅打印 Eclipse 中的唯一值

数据类似这样:-

1,Ron,1234,ABC,12

2,Harry,4125,DEF,14

3,Kent,1786,GHI,15 

1,Ron,1234,ABC,12

2,Harry,4125,DEF,14

【问题讨论】:

  • 我是java新手,请帮帮我
  • 创建一个比较方法,只比较值...只打印出唯一的值,仅此而已
  • 使用 Eclipse 开发与问题无关——这是一个 Java 问题。你需要付出一些努力,找出哪里出了问题,然后人们会更愿意提供帮助。

标签: java eclipse csv


【解决方案1】:
String csvFile = "csv.csv";
    BufferedReader br = null;
    String line = "";
    HashSet<String> lines = new HashSet<>();
    try {
        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {
            if (lines.add(line)) {
                System.out.println(line);
            }
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

也许对你有帮助

【讨论】:

    【解决方案2】:

    我的建议是使用以下策略:

    第一步:创建HashMaphttp://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html 您将在其中保存您阅读的 CSV 的每一行。您将保存在 hashmap 中,因为 Hashmap 不会接受与另一个键类似的键。因此,您将阅读的每一行,都将作为 KEY 保存在 hashmap 中! 因此,逻辑是:尝试将刚刚读取的行保存为 Key。如果有效,请打印该行。如果它不起作用,请丢弃该行并阅读下一行。

    知道了?

    第二步: 使用 BufferedReader http://docs.oracle.com/javase/7/docs/api/index.html?java/io/BufferedReader.html 逐行读取 CSV。 使用带有 readLine() 的 BufferedReader 获取 CSV 的每一行。 它会将您正在阅读的行保存在字符串中

    就是这样。

    所以,这里是整个代码的概述:

    1- 使用 BufferedReader.readLine() 读取每一行代码

    2- 获取您从 readLine 获得的字符串,并尝试将其添加到您的 Hashmap 作为哈希图的键:如果有效,则打印该字符串。如果不起作用,丢弃字符串;

    3- 阅读下一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-29
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      相关资源
      最近更新 更多