gpt4 book ai didi

java - 如何使用 java 检查 .csv 中的重复记录

转载 作者:行者123 更新时间:2023-12-01 16:54:22 25 4
gpt4 key购买 nike

我有一个 CSV 文件:

10;name1;id1
20;name2;id2
10;name3;id3

Row for Row i 将数据推送到名为forward的方法:

forward(nr, name, id);

如果“nr”重复,我如何检查整个 csv?就像上面的例子是:10。

我现在的代码:

while ((line = reader.readLine()) != null) {
scanner = new Scanner(line);
scanner.useDelimiter(";");
while (scanner.hasNext()) {
String data = scanner.next();
if (index == 0)
nr = Integer.parseInt(data);
else if (index == 1)
name = data;
else if (index == 2)
id = data;
else
System.out.println("invalid data::" + data);
index++;
}
index = 0;
forward(nr, name, id);
}

如果发现重复项,我只想将其打印在屏幕上。

最佳答案

使用 Map<Long, String> 。每次转发输出之前,您可以检查映射是否已包含 key (数字)。

Map<Long, String> entryMap = new HashMap<Long, String>();
[...]
if (!entryMap.containsKey(nr)) {
entryMap.put(nr, name);
forward(nr, name, id);
} else
System.out.println("Entry with number " + nr + " already added to .csv file");

如果只有数字相关并且不需要添加任何异常(exception)(例如 entry with name and number is already in the file ),您可能需要选择其他数据结构,例如 List .

正如我在上面的评论中读到的,如果您打算替换,您可以执行以下操作:

创建一个保存参数的类:

public class CsvEntry {
private int number;
private String name, id;

public CsvEntry(number, name, id) {
this.number = number;
this.name = name;
this.id = id;
}
// getters & setters
}

然后更改Map至:

Map<Long, CsvEntry> entryMap = new TreeMap<Long, CsvEntry>();
// TreeMap so the entries are sorted.
[...]
entryMap.put(nr, new CsvEntry(nr, name, id));
// after populating the map, e.g., after the outer loop
forward(entryMap);

然后在前进中,您只需循环输出 map 即可。

关于java - 如何使用 java 检查 .csv 中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com