Java - 根据列将CSV解析为数组

时间:2015-11-15 21:00:03

标签: java arrays parsing csv

我想请求帮助完成这项任务: 我有CSV这样的例子:

column1$column2$column3
123$xyz$321
456$zyx$654

我想通过列/标题将Java解析为数组/数组列表 - >例如

ArrayList column1 = [123,456]
ArrayList column2 = [xyz,zyx]
ArrayList column3 = [321,654]

谢谢大家。

2 个答案:

答案 0 :(得分:2)

这就是我将如何做到这一点......,请注意将列放在另一个List中以获得更少的代码并使其更具动态性。

public static void main(String[] args) {
    ArrayList<ArrayList<String>> columns = new ArrayList<ArrayList<String>>();
    BufferedReader br = null;
    try {
        String sCurrentLine;
        br = new BufferedReader(new FileReader("testing.cvs"));

        while ((sCurrentLine = br.readLine()) != null) {
            String[] fields = sCurrentLine.split("\\$");
            for (int i = 0; i < fields.length; i++) {
                if (columns.size()<=i){
                    columns.add(new ArrayList<String>());
                }
                columns.get(i).add(fields[i]);
            }
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

答案 1 :(得分:0)

我瘦了这可以帮助你解决这个问题。

public static void main(String[] args) {
    Scanner s = null;
    try {
        s = new Scanner(new File("C:\\temp\\file.txt"));
        ArrayList lis1 = new ArrayList();
        ArrayList lis2 = new ArrayList();
        ArrayList lis3 = new ArrayList();

        while (s.hasNext()) {

            String d = s.nextLine();
            lis1.add(d.split("\\$")[0]);
            lis2.add(d.split("\\$")[1]);
            lis3.add(d.split("\\$")[2]);

        }

        for (Object l : lis1) {
            System.out.print(l+" ");
        }
        System.out.print("\n ");
        for (Object l : lis2) {
            System.out.print(l+" ");
        }
        System.out.print("\n ");
        for (Object l : lis3) {
            System.out.print(l+" ");
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

当你不

时,你可以使用结果