-1

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

需要建议来解决这个问题,或者有什么其他方法可以实现

4

3 回答 3

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 循环没有为我们提供计数器。

于 2013-07-24T11:50:48.800 回答
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()]);
  }
于 2013-07-24T11:58:01.077 回答
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 变量值。

于 2013-07-24T12:06:54.120 回答