在eclipse中删除CSV文件中的重复项

时间:2015-02-08 03:18:32

标签: java eclipse csv

我有一项任务,我必须阅读包含一些重复行数据的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

2 个答案:

答案 0 :(得分:2)

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();
            }
        }
    }

它可能对你有帮助

答案 1 :(得分:0)

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

第1步:创建HashMap http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html 您将在哪里保存您阅读的CSV的每一行。您将保存在哈希映射中,因为Hashmap不会接受与另一个键相同的键。因此,您将读取的每一行,您将作为KEY保存在hashmap中! 因此,逻辑是:尝试将刚刚读取的行保存为键。如果它工作,打印该行。如果它不起作用,丢弃该行并阅读下一行。

得到它了?

第二步: 使用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作为hashmap的Key:如果有效,则打印String。如果它不起作用,丢弃该字符串;

3-阅读下一行。