具有动态标识的javabean

具有动态标识的javabean,java,csv,Java,Csv,我有一个CSV文件,每页有相同数量的令牌(有时是随机的)。 我需要创建Javabean来存储/检索每个令牌 问题: 如果CSV文件有3列,那么我需要有3列的JavaBean来存储/检索 示例:-公共void setCol3(字符串col1、字符串col2、字符串col3){ ..... } 如果CSV文件有6列,那么我需要有6列的JavaBean来存储/检索 示例:-公共无效集合col6(字符串col1、字符串col2、字符串col3、, 字符串col4、字符串col5、字符串col6){ ..

我有一个CSV文件,每页有相同数量的令牌(有时是随机的)。 我需要创建Javabean来存储/检索每个令牌

问题: 如果CSV文件有3列,那么我需要有3列的JavaBean来存储/检索

示例:-公共void setCol3(字符串col1、字符串col2、字符串col3){ ..... }

如果CSV文件有6列,那么我需要有6列的JavaBean来存储/检索

示例:-公共无效集合col6(字符串col1、字符串col2、字符串col3、, 字符串col4、字符串col5、字符串col6){ ..... }

问题: JavaBean中是否有任何方法可以根据CSV的令牌(列)数量自动分配

关于
karthik

您需要一个灵活的bean,它可以具有不同数量的属性。出于这个特殊的原因,我编写了一个名为的java类

使用FlexBean,您可以执行以下操作:

public static void main(String[] args) {

    printCSVLines(readCSV("c:/deleteme/sample.csv"));

}

public static List<FlexBean> readCSV(String csvFile){
    List<FlexBean> csvLines = new ArrayList<>();

    String line = "";
    String cvsSplitBy = ",";

    try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {

        while ((line = br.readLine()) != null) {

            // use comma as separator
            String[] country = line.split(cvsSplitBy);

            FlexBean csvLine = new FlexBean();
            for (int i=0;i<country.length;i++){
                csvLine.set("col"+i, country[i]);
            }
            csvLines.add(csvLine);
        }

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

    return csvLines;
}

public static void printCSVLine(FlexBean csvLine){
    for (String col: csvLine.getPropertyNames()){
        System.out.print(csvLine.valueOf(col).toString()+" | ");
    }
}

public static void printCSVLines(List<FlexBean> csvLines){
    for (FlexBean line: csvLines) {
        printCSVLine(line);
        System.out.println("");
    }

}
publicstaticvoidmain(字符串[]args){
printCSVLines(readCSV(“c:/deleteme/sample.csv”);
}
公共静态列表readCSV(字符串csvFile){
List csvLines=new ArrayList();
字符串行=”;
字符串cvsSplitBy=“,”;
try(BufferedReader br=new BufferedReader(new FileReader(csvFile))){
而((line=br.readLine())!=null){
//使用逗号作为分隔符
字符串[]国家=行分割(cvsSplitBy);
FlexBean csvLine=新的FlexBean();

对于(int i=0;我必须在列表中存储行的值。嗨,我知道如何处理行的值…但这不是我感兴趣的。