CSV 1
______
UUID ID
9da0dec2-1f66-4c5b-a859-a07c3bb26705,3101659035262004
04977348-d0a3-4836-8bbc-d46cb3c4f962,3101659036985015
e63440bb-d479-4124-b6a8-2b7335dd5e08,3101659036995887
34f0468e-4685-4637-a455-1814e0813639,3101659037151614
42b06952-13f8-4159-ba02-244ea48ca96d,3101659037418477
0581ee59-f811-4b10-86de-f75a04189c0a,3101659037565062
880201c2-db8f-4859-8fdf-1d398566b4fc,3101659037610684
35a37636-fdb2-40c4-a2c0-5e95dded2d1e,3101659037902182
280907c1-39a2-4b77-8613-66cb739f140d,3101659038153773
csv2
ID
3101659035262004
3101659036995887
3101659037151614
3101659037418477
3101659037565062
3101659037610684
3101659037902182
3101659038153773
需要根据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])
}
}
有很多方法可以解决您的问题。我会解释一下我会怎么做,它很简单,不需要";很多";专门知识
因此,一开始您应该将这两个CSV文件都读取到Java中,并将它们存储在某个地方。我推荐一份ArrayList。它很容易使用,而且根据数据的大小,数据结构实际上并不重要。
因此,读取CSV文件可能如下所示:
ArrayList<String> ids = new ArrayList<String>();
try {
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String line = "";
while((line = reader.readLine()) != null) {
ids.add(line)
}
}
catch (Exception e) {
System.err.println("The given input file does not exist, probably wrong file path!");
}
在将两个.csv文件都读取到两个不同的ArrayList中后,将它们存储起来两者都应该写另一种方法;findMissingID((";。
在这个方法中,你应该使用存储所有现有ID的ArrayList,对其进行迭代,并调用ArrayList.contents(ArrayList.get(i(
总而言之,它可能看起来像这样:
public void findMissingIDs() {
ArrayList<String> allIDs = new ArrayList<>();
ArrayList<String> toCompare = new ArrayList<>();
for (int i = 0; i < allIDs.size(); i++) {
boolean contains = false;
if (toCompare.contains(allIDs.get(i))) {
contains = true;
}
else {
contains = false;
}
// DO SOMETHING BASED ON "contains".
}
}
两个ArrayList应替换为ArrayList,该ArrayList包含来自.csv文件的信息,当然是