2013-07-24 98 views
-1

我試圖轉換和字符串類型Arrayylist爲2D陣列,字符串[] []使用以下方式轉換的ArrayList <String>爲String [] []

ArrayList<String> arrayList = new ArrayList<String>(); 
    arrayList.add("report1"); 
    arrayList.add("report2"); 
    arrayList.add("report3"); 

    String[][] array = new String[arrayList.size()][]; 
    for (int i = 0; i < arrayList.size(); i++) { 
     ArrayList<String> row = arrayList.get(i); 
     array[i] = row.toArray(new String[row.size()]); 
    } 

所得在編譯錯誤ArrayList<String> row = arrayList.get(i);

需要建議來解決這個或有任何其它的辦法可以達到同樣的

+2

你只能得到一個一維數組列表。你有'ArrayList ',而不是'ArrayList >'。 – hexafraction

+0

您是否試圖將單維列表轉換爲二維字符串數組? – Suji

+0

是的,我試圖將其轉換爲2d字符串數組。 – Mango

回答

0

你只有一個ArrayList,ArrayList不是>。前者是一串動態字符串,你可以從中獲得String[]

直接讓

String[] myArray=arrayList.toArray(new String[0]); 

沒必要弄的大小,因此它會自動獲得大小。

如果你想獲得一個char[][]然後執行:

char[][] chars=new char[arrayList.size()][0] 
int i=0; 
for(String s:arrayList){ 
    chars[i]=s.toCharArray(); 
    i++; 
} 

請注意,我們正在增加在循環的計數器。增強型for循環不提供給我們一個計數器。

+0

這是二維數組? – MaVRoSCy

+0

@MaVRoSCy不,OP甚至沒有2D陣列。他們只有一個字符串的數組列表。 – hexafraction

+0

我認爲他在他的代碼[] [] – MaVRoSCy

0

arrayList.get(i)它將返回字符串而不是字符串的數組列表。所以編譯器會給鑄件錯誤。

,如果你想實現你的功能,你可以做如下

String[][] array = new String[arrayList.size()][]; 
    for (int i = 0; i < arrayList.size(); i++) { 
     ArrayList<String> row = new ArrayList<String>(); 
     row.add(arrayList.get(i)); 
     array[i] = row.toArray(new String[row.size()]); 
    } 
0
// TODO Auto-generated method stub 
    ArrayList<String> arrayList = new ArrayList<String>(); 
    arrayList.add("report1"); 
    arrayList.add("report2"); 
    arrayList.add("report3"); 
    arrayList.add("report4"); 
    arrayList.add("report5"); 
    arrayList.add("report6"); 
    arrayList.add("report7"); 
    arrayList.add("report8"); 
    arrayList.add("report9"); 

    int rowSize = 3; 



    String[][] array = new String[rowSize][]; 
    int rowIndex=0; 

    ArrayList<String> tempList = new ArrayList<String>(); 
    for (int i = 0; i < arrayList.size(); i++) { 

     tempList.add(arrayList.get(i)); 

     if(i>0 && ((i+1)%(rowSize))==0){ 

      array[rowIndex++] = tempList.toArray(new String[tempList.size()]); 
      tempList = new ArrayList<String>(); 
     } 
    } 

    // prints the result array for varification 

    for(int i=0;i<array.length;i++){ 
     System.out.println("\n\nRow : "+i+"\n"); 
     String[] innerArray = array[i]; 
     for(int j=0;j<innerArray.length;j++){ 
      System.out.print(innerArray[j]+" "); 
     } 
    } 

更改rowSise變量值按你們的要求。

相關問題