gpt4 book ai didi

java - 在 Java 中使用 CSV 文件的最佳方式

转载 作者:行者123 更新时间:2023-12-01 17:20:22 24 4
gpt4 key购买 nike

我无法找到读取 CSV 文件以提取和比较其中某些内容的最佳方法。该文件由字符串组成,我需要跟踪是否有重复的项目。这是我到目前为止所拥有的。

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

public class CSVReader {

public static void main(String[] args) {

String csvFile = "Cchallenge.csv";

String line = "";

String cvsSplitBy = ",";

try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {

while ((line = br.readLine()) != null) {

// use comma as separator

String[] country = line.split(cvsSplitBy);


} catch (IOException e) {

e.printStackTrace();

}

}

}

所以我用所有数据创建了一个名为“国家/地区”的数组。但是当我去打印数组长度时,它给了我很多不同大小的不同数组。我很难遍历数组并提取重复项。任何想法都会有帮助,谢谢。

最佳答案

如果您只是希望获得没有任何重复项的项目列表,那么您可以将这些项目收集到一个集合中,因为集合不允许重复的项目:

Set<String> items = new HashSet<>();

try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
items.addAll(Arrays.asList(line.split(cvsSplitBy)));
}
} catch (IOException e) {
e.printStackTrace();
}

如果您还想跟踪重复项,则可以使用另一个集合并向其中添加项目(如果它们已存在于第一个集合中)。这将是一个容易完成的壮举,因为 Setadd 方法返回一个 boolean 值,以确定集合是否已包含指定元素:

Set<String> items = new HashSet<>();
Set<String> duplicates = new HashSet<>();

try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
for (String item : line.split(cvsSplitBy)) {
if (items.add(item)) {
continue;
}
duplicates.add(item);
}
}
} catch (IOException e) {
e.printStackTrace();
}

关于java - 在 Java 中使用 CSV 文件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61305145/

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