java - 在Java中比较2个csv文件中的2列

标签 java csv compare

我有两个带有主键的 csv,我试图将两个键进行比较,以便我可以将相关的 csv 合并到一个具有正确键的 csv,但是现在我只想比较第一列中的内容。我的脑子有点空白,我希望通过代码你可以弄清楚我前进的方向。我无法让我的数组真正接受字符串。 java.lang.arrayindexoutofbounds异常

import java.io.<em>; import java.util.</em>;

<p>public class UDC { public void search(String [][] wat, String [][] ud){</p> <pre><code>} public static void main (String [] args) throws IOException { String [] [] cols = {}; String [] [] cols1={}; int row =0; int row1 =0; int j = 0; /*Scanner s = new Scanner(new File("Watford Update File.csv")); Scanner c = new Scanner(new File("udc.csv")); while (s.hasNextLine()){ String line = s.nextLine(); cols =line.split(","); System.out.println(cols[0]);*/ Scanner s = new Scanner(new File("file1.csv")); Scanner w = new Scanner (new File("file.csv")); while (w.hasNextLine()) { String line1 = w.nextLine(); System.out.println(cols); //cols[row]=line1.split(","); row ++; if(!w.hasNextLine()){ while (s.hasNextLine()){ String line2 = s.nextLine(); //cols1[row1]=line2.split(","); //put while loop in diffrent method but break if(cols[j].equals(cols1[row1])) { j++; row1++; System.out.print(cols[j]); System.out.print(" "); System.out.print(cols1[row1]); System.out.println(); }else{ row1++; } } } } } </code></pre>

}

最佳答案

而不是使用数组 colscols1 ,你应该使用List<String[]> 。另外,您的代码非常困惑,因为比较循环与读取循环交织在一起。最好先读入数据,然后进行比较。

public static void main(String [] args)
{
    List<String[]> cols;
    List<String[]> cols1;
    try {
        cols = readFile("udc.csv");
        cols1 = readFile("Watford Update File.csv");
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
    // loop through array lists to do your comparisons
    // For example, to compare the first column of rows i and j:
    //    cols.get(i)[0].equals(cols1.get(j)[0])
}

private static List<String[]> readFile(String fileName) throws IOException
{
    List<String[]> values = new ArrayList<String[]>();
    Scanner s = new Scanner(new File("udc.csv"));
    while (s.hasNextLine()) {
        String line = s.nextLine();
        values.add(line.split(","));
    }
    return values;
}

关于java - 在Java中比较2个csv文件中的2列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11653921/

相关文章:

java - 上传文件, Angular Spring 启动

java - 在 Netty 中处理多格式数据

java - 我需要有关阅读来自 SQLite 的已签名电子邮件的帮助

java - 从 JSON 解析 Map 和 String 不起作用

Python CSV输出两行而不是两列

javascript:比较字符串值的 if 语句不起作用

r - 捕获 R 中两个数据帧之间的匹配和不匹配值

c# - 在 C# 中使用 select 语句动态创建 CSV 文件

linux - 用于拆分不同文件的 csv 数据

mysql - 使用 mysql 根据每个客户的日期将第一条记录与其他行进行比较