第一个
需要在CSV1(ID)和CSV2(ID)的基础上比较CSV1和CSV2,并打印缺失的行。ID中的所有值都已排序。我需要根据CSV1中缺失的ID获得缺失的UUID。我是Java新手,试图解决这个问题,但发现很困难。感谢任何帮助。
编辑:根据其他开发人员的评论,我尝试了以下方法,仍然很粗糙,想知道我可以做的改进
BufferedReader br = new BufferedReader(new FileReader("/Users/IdeaProjects/extract/csv1.csv"));
def line = null;
HashMap<String,String> map = new HashMap<String, String>();
while((line=br.readLine())!=null){
def str = line.split(",");
for(int i=0;i<str.length;i++){
// def arr = str[i].split(",");
map.put(str[1], str[0]);
}
}
//System.out.println(map);
BufferedReader br2 = new BufferedReader(new FileReader("/Users/IdeaProjects/extract/csv2.csv"));
while((line2=br2.readLine())!=null){
def str2 = line2.split(",");
for(int i=0;i<str2.length;i++){
// def arr = str[i].split(",");
map.remove(str2[0])
}
}
1条答案
按热度按时间iswrvxsc1#
有很多方法可以解决你的问题。我将解释我会做的方式,它是安静的简单,不需要“很多”的知识。
所以首先你应该把两个CSV文件都读入Java并存储在某个地方。我推荐使用ArrayList。它很容易使用,而且根据你的数据大小,数据结构真的不重要。
因此阅读CSV文件可能如下所示:
在将两个.csv文件读入两个不同的ArrayList之后,将它们都存储起来,并编写另一个方法,如“findMissingIDs()"。
在这个方法中,你应该取一个ArrayList,它存储了所有现有的ID,遍历它并调用ArrayList.contains(ArrayList.get(i))。调用.contains()的ArrayList应该是一个ArrayList,它不包含所有的ID,而调用.get()的ArrayList应该是一个包含所有ID的ArrayList
总而言之,它可能看起来像这样:
当然,这两个ArrayList应该由保存.csv文件中信息的ArrayList替换