多个阵列存储在一个变量中.[Java]



我在一个变量中存储了多个数组,每个数组是大小1。我试图将它们全部组合到一个单个数组中。我使用缓冲读取器读取CSV文件,然后使用以下方法将其分为阵列列表:

public static arraylistcsvtoArray(字符串csvdata({ arrayList结果= new ArrayList((;

    if (csvData != null){
        String[] splitData = csvData.split(",");
        for(int i = 0; i < splitData.length; i++){
            if(!(splitData[i] == null) || !(splitData[i].length() == 0)) {
                result.add(splitData[i].trim());
            }
        }
    }
    return result;
}

该方法将CSV的每一行分解为自己的阵列列表。我想将所有元素组合在例如结果中。有什么想法吗?

,所以这个想法是拥有一个arraylist的父级阵列。每次调用该功能时,请传递对先前结果的引用,以便可以合并它们。这只是可以实现的多种方法中的一个,但是应该为您提供进一步优化的起点。

// Initialize and provide dummy input.
int requiredIndex = 5;
    ArrayList<String> results = new ArrayList<String>();
    csvToArray("some,column,data,with,seven,columns,only", results, requiredIndex);
    csvToArray("more,data,that,came, in, just, now , and is, longer", results, requiredIndex);
    csvToArray("a, short, line", results, requiredIndex);
    csvToArray("last, line, of, input, which, is, correct.", results, requiredIndex);
    System.out.println(results);
    // output : [columns, just, is]
// Update the method as below.
public static void csvToArray(String csvData, ArrayList<String> results, int index){
    if (csvData != null){
        String[] splitData = csvData.split(",");
        int wordCount = 0;
        if(splitData.length < index)
            return;
        for(int i = 0; i < splitData.length; i++){
            if(!(splitData[i] == null) || !(splitData[i].length() == 0)) {
                ArrayList<String> individualList = new ArrayList<String>();
                individualList.add(splitData[i].trim());
                if(wordCount == index)
                    results.add(splitData[i].trim());
                wordCount++;
            }
        }
    }
}

您可能会注意到,我没有对行数或列数放置任何限制。这是为了迎合更广泛的方案,但如果没有,则可以使用限制初始化,因此内存分配得到了优化。

您可以将每个ArrayList添加到另一个arraylist,

    ArrayList allresults = new ArrayList();
    result = ArrayListcsvToArray(csvData);
    allresults.add(result);
    public static ArrayListcsvToArray(String csvData){ 
        ArrayList result = new ArrayList();
        if (csvData != null){
            String[] splitData = csvData.split(",");
            for(int i = 0; i < splitData.length; i++){
                if(!(splitData[i] == null) || !(splitData[i].length() == 0)) {
                    result.add(splitData[i].trim());
                }
            }
        }
        return result;
    }

最新更新