-1

次の方法を使用して、文字列型のArrayylistを2次元配列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.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 に答える
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 に答える