2013-07-24 94 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变量值按你们的要求。

相关问题