繁体   English   中英

如何打印列表的值 <List<String[]> &gt;在Java中?

[英]How to print the values of the List<List<String[]>> in java?

我想从列表中获取单个数组的值并利用它们

 import java.io.FileReader;   
 import java.util.ArrayList; 
 import java.util.List;
 import au.com.bytecode.opencsv.CSVReader;


public class ReadCSV {

public static void main(String[] args) {

    String startFile = "/Users/ray/Downloads/hello.csv";
    //String outFile = "./outData.xml";

    try {
        CSVReader reader = new CSVReader(new FileReader(startFile));
        String[] line = null;

        String[] header = reader.readNext();

        List<List<String[]>> out = new ArrayList<List<String[]>>();

        while((line = reader.readNext())!=null){
            List<String[]> item = new ArrayList<String[]>();
                for (int i = 0; i < header.length; i++) {
                String[] keyVal = new String[2];
                String string = header[i];
                System.out.println("the value of the header : "+string);
                String val = line[i];
                System.out.println("the value of the field : "+val);
                keyVal[0] = string;
                keyVal[1] = val;
                item.add(keyVal);
            }
            out.add(item);
        }


    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
  }

我有以下格式的csv文件:-

Keyword,AlternateKeywords---> these are the header fields
apple,banana
orange,ego kit
ego ce4,venus
demo,cat

我想要以下形式的数组:

array[] keyword={apple,orange,ego ce4,demo}
array[] banana={banana,ego kit,venus,cat}

我不知道如何从“输出”列表中获取数据并获取值并如上所述打印元素。 对于特定的列,它可以是任意数量的标题和任意数量的元素,上面的csv只是一个示例。

如果可以的话请帮助我。

看一下您的结构:

array[] keyword={apple,orange,ego ce4,demo}
array[] banana={banana,ego kit,venus,cat}

您不需要像List<List<String[]>>这样的3D,而只需要2D List<List<String>>

这是工作代码

public static void main(String[] args) {

    String startFile = "C:\\workspacePrototype\\some.csv";

    try {
        CSVReader reader = new CSVReader(new FileReader(startFile));
        String[] line = null;

        String[] headers = reader.readNext();


        List<List<String>> build = new ArrayList<List<String>>();

        List<String> tempArr;

        // generate headers
        for(String header : headers){
            tempArr = new ArrayList<String>();
            tempArr.add(header);
            build.add(tempArr);
        }


        // generate content
        while((line = reader.readNext())!=null){

            for (int i = 0; i < build.size(); i++) {
                tempArr = build.get(i);
                String val = line[i];
                tempArr.add(val);
                build.set(i, tempArr);
            }

        }

        System.out.println(Arrays.asList(build));


    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

输出:

 [[[Keyword, apple, orange, ego ce4, demo], [AlternateKeywords, banana, ego kit, venus, cat]]]

[编辑]

顺便说一句,您可以创建一些类,例如:

 public class Column{
  private String mName;
  private List<String> mData;

  // get/set
 }

而是

 List<List<String>> build = new ArrayList<List<String>>();

用途像:

 List<Column> build = new ArrayList<Column>();

通过这种方式, Column类应将列名存储为mName ,将数据存储为mData

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM