java - 从csv文件中读取数据并分别打印唯一、重复和无效数据

标签 java csv

我有一个 csv 文件,我必须读取该 csv 文件并分别打印唯一、重复和无效元素。 这是代码

import java.io.BufferedReader;
import java.io.FileReader;

import java.util.HashSet;

public class InputData {

    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\e.csv"));
        String line = null;
        HashSet<String> lines = new HashSet<>();
        HashSet<String> lines1 = new HashSet<>();

        System.out.println("Unique List:-  ");
        while ((line = br.readLine()) != null) 
        {
            {   
            try {
                if (lines.add(line)) {
                    String[] part = line.split(",");
                    Integer.parseInt(part[0]);
                    System.out.println(line);
                } else {
                    lines1.add(line);
                }
            } catch (NumberFormatException ne) {
                System.out.println(" Invalid data:- " + ne); 
            }

            }
        }
        br.close();
        System.out.println("Duplicates:- " +lines1);
    }
}

如果输入的是

101,Ron,4545,XYZ,3
102,Harry,2345,ABC,3
103,Sam,5448,DEF,3
104,John,9989,GHI,3
101,Ron,4545,XYZ,3
104,John,9989,GHI,3
105,Gang,123,HNB,3
jftdgchj;vcvuigkuj;uygf
hvykfjtucd;gfd;gfd

我得到的输出为:-

Unique List:-  
101,Ron,4545,XYZ,3
102,Harry,2345,ABC,3
103,Sam,5448,DEF,3
104,John,9989,GHI,3
105,Gang,123,HNB,3
 Invalid data:- java.lang.NumberFormatException: For input string: "jftdgchj;vcvuigkuj;uygf"
 Invalid data:- java.lang.NumberFormatException: For input string: "hvykfjtucd;gfd;gfd"
Duplicates:- [101,Ron,4545,XYZ,3, 104,John,9989,GHI,3]

但我想要将重复项放在单独的行中...请帮忙

最佳答案

您正在使用 HashSet 的默认 .toString() 方法,就像 Stephen P 在上面的评论中指出的那样。

更改此:

System.out.println("Duplicates:- " +lines1);

像这样的东西(使用enhanced for-loop来迭代集合):

for (String s : lines1) {
    System.out.println("Duplicates:- " + s);
}

关于java - 从csv文件中读取数据并分别打印唯一、重复和无效数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421059/

相关文章:

java - 使用 TimePicker 显示和检索 'seconds'

mysql - 从 vbs 和 Access 中将 csv 文件导入 mysql 时遇到问题

java - jsp注册商标

java - 可以像 .NET 只读属性一样使用 Java 最终变量吗?

java - 以编程方式设置 ImageButton 图像

regex - 查找重复项(正则表达式)

java - 正则表达式查找分隔符之间包含的字符串

html - 使用 grep 将 HTML 解析为 CSV

java - 如何阅读 | java中的分离csv文件?

JavaFX 警报不会在新窗口中打开,而是在新选项卡中打开