2017-04-27 91 views
-5

我有多個數組存儲在一個變量中,每個數組都是大小1.我試圖將它們全部合併成一個數組。我已經使用緩衝讀取器來讀取一個csv文件,然後使用下面的方法將其分割成一個數組列表:多個數組存儲在一個變量中。 [Java]

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; 

} 

該方法將csv的每一行分割成它自己的數組列表。我想將例如result.get(5)的所有元素合併到他們自己的數組列表中。 任何想法?

+2

你做了什麼? –

+0

添加一些代碼和更多解釋什麼輸入是輸出應該是什麼。 – Hassan

+0

你有一些代碼可以告訴我們嗎? –

回答

0

這樣的想法是有ArrayList中的父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++; 
      } 
     } 
    } 
} 

您可能已經注意到我沒有對行數或列數進行任何限制。這是爲了滿足更廣泛的場景,但如果不是,您可能會初始化限制,以便優化內存分配。

+0

您的答案似乎已將arraylist中的每個元素分隔爲自己的arraylist。我想從每個數組列表中選取第5個項目,並將它們合併到包含每行的第5個項目的數組列表中。 – mapamap

+0

所以你只需要特定的索引而不是全部?其餘的結果不需要或可以保持這種方式? – Hassan

+1

我想在第5個索引創建一個單一的數組列表。 – mapamap

0

您可以將每個數組列表添加到另一個數組列表,

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; 

    } 
相關問題