【发布时间】:2016-05-01 17:08:52
【问题描述】:
我想获取 CSV 文件的内容并删除其中的重复项。这是一个在这里和其他地方得到了很多报道的话题,但没有一个建议的方法对我有用:最终结果仍然包含重复的值。
这些是我从 CSV 文件中获取文本的步骤:
String holder = "";
Scanner input = new Scanner(new File("C:"+File.separator+"followers.csv")).useDelimiter(",");
List<String> temp = new ArrayList<String>();
while (input.hasNext())
{
holder = input.next();
temp.add(holder);
}
input.close();
到目前为止,一切都很好。
在尝试将 ArrayList 转换为 LinkedHashSet 和其他很多东西后,都无济于事,这就是我目前正在做的事情:
List<String> finalList = new ArrayList<String>();
for (String s : temp)
{
if (!finalList.contains(s))
{
finalList.add(s);
}
}
finalList.forEach(System.out::println);
但 finalList 仍然包含重复值。
我假设问题在于我如何首先将 CSV 值放入 ArrayList,但我不知道我哪里出错了。
【问题讨论】:
-
你确定有重复吗?集合不会存储重复项,上述循环也不会添加重复项。要么您发布的代码中没有发生某些事情,要么可能存在编码问题,其中字符看起来相同但实际上不同。
-
我很确定。我正在使用一个只有“一”、“二”、“二”和“三”字样的测试 CSV 文件。显然,我希望省略多余的“二”。
-
缺少一些关键信息。确保包含所有代码,包括 CSV 文件。此外,包括在您的
forEach中登录的内容。如果您将值记录在temp中,是否符合您的预期。
标签: java csv arraylist file-io