我想知道循环浏览两个csv文件并比较它们的列最合适的方式是什么。具体来说,我想将csv文件1第1列与csv文件2第20列的每一次迭代进行比较,并检查是否存在匹配。以下是我到目前为止的情况。此外,csv文件1比csv文件2小得多。
public class ClassifyData {
public static void main(String[]args) throws IOException{
File file1 = new File("file1.csv");
File file2 = new File("file2.csv");
FileWriter writer = new FileWriter("/Users/home/Work.csv");
PrintWriter pw = new PrintWriter(writer);
Scanner in = new Scanner(file1);
Scanner in2 = new Scanner(file2);
boolean firstLine = true;
String[] temp = null;
String [] temp2 = null;
String line = null;
String line2 = null;
while((line = in.nextLine())!=null){
temp= line.split(",");
while(line2 = in2.nextLine() !=null){
temp2 = line2.split(",");
if(temp[0] == temp[20]){
System.out.println("match");
pw.append("0");
continue;
}
pw.append("\n");
}
}
pw.flush();
pw.close();
writer.close();
}
}
我认为你的解决方案行不通,因为你只需要浏览两个文件一次(你同时按顺序递增浏览两个文件)。鉴于第一个文件很小,我建议彻底检查该文件一次,并将值存储在哈希表的第一列中。然后循环浏览第二个文件,检查第20列中的值是否出现在哈希表中。
在if(temp[0]==temp[20])
行中,你可能是指if(temp[0]]=temp2[20])
。这会给你想要的比较。然而,您是内部的,而
循环仍然不会像您希望的那样在第二个文件的开头重新开始。我不认为
扫描器
对象可以在一个文件上重新开始,即使可以,反复读取同一个文件也会浪费大量的文件读取。这样对您的磁盘更有效率:
ArrayList<String> list1 = new ArrayList<String>;
while((line = in.nextLine())!=null){
temp= line.split(",");
list1.add(temp[0]);
}
// ...
for(int i = 0; i < list1.size(); i++){
for(int j = 0; j < list2.size(); j++){
if(list1.get(i).equals(list2.get(j))){
System.out.println("Match found");
}
}
}
警告:未经测试的代码
我想比较这两个函数的值。不幸的是,我试图使,但我一直得到。 我想检查如果。这就是我上面完整的代码。
我试图建立一个函数,检查一个单词或文本是否是回文。要做到这一点,它拆分文本,使每个字母都是一个新数组的元素,它去掉空白,并建立反向数组。然后检查两个数组中处于相同位置的每个元素是否相等。如果不是,则返回false,如果是,则返回true。这里的函数是: 我不知道出了什么问题,但是不管我传递给函数什么单词或文本,函数似乎都在返回一个真值。那有什么不好?
我需要逐行比较两个文件。在每个文件中,行只有1或-1,所以如果行相同,就不要计数,如果行不同,就计数=+1。 例如:
我想比较两个音频文件,例如mp3和wav。我用Musicg通过指纹进行比较。 musicg只在wav上工作,所以我使用JAVE将mp3转换为wav 现在的问题是,当我尝试比较两个我不转换指纹的wav时,工作完美,但是当我比较两个不同的音频时,我必须转换它总是返回两个音频是相同的。
我有一个df,我试图比较两个列,如果它们在同一行中有大约相同的值,我希望它从df中删除。即。: 我只希望df中保留第2/3行,因为第1/4行中的A和B彼此相似。 我曾经尝试过这样做,如果A列中的在某个范围内(/-15%的行B的值),则删除该行,但没有成功。我不知道熊猫是否有某种内在的功能。