将ArrayList <string>转换为String [] [] </string>

时间:2013-07-24 11:48:02

标签: java arrays multidimensional-array arraylist

我正在尝试使用以下方式将类型字符串的Arrayylist转换为2d数组,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);

处导致编译错误

需要建议来解决这个问题,还是有其他方法可以实现相同的目标

3 个答案:

答案 0 :(得分:0)

您只有一个ArrayList,而不是ArrayList&gt;。前者是一个动态的字符串数组,您可以从中获取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循环不会为我们提供一个计数器。

答案 1 :(得分:0)

arrayList.get(i)它将返回String而不是string的arraylist。所以编译器会给出转换错误。

如果您想要实现您的功能,可以按照以下方式进行操作

  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()]);
  }

答案 2 :(得分: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变量值。