比较Java中2个csv文件中的2列

时间:2012-07-25 16:03:34

标签: java csv compare

我有两个带有主键的csv,即时通讯试图同时对两个键进行拼接,这样我就可以将相关的csvs与正确的键组合在一起,但是现在我只想比较其中的一个。我的想法有点空白我希望通过代码可以找出我要走的方向。我无法让我的数组实际上接受字符串。 Java.lang.arrayindexoutofboundsexception

import java.io.; import java.util.;

public class UDC { public void search(String [][] wat, String [][] ud){

}


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++;

            }

        }


    }
    }

}

} 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++; } } } } }

1 个答案:

答案 0 :(得分:3)

不应使用colscols1的数组,而应使用List<String[]>。此外,您的代码非常混乱,因为您将比较循环(s?)与读取循环交织在一起。最好先读入数据,然后进行比较。

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;
}