5

次のコードでは、配列の代わりにArrayListを使用したいと思います。

for(int k=0;k<SIZE;k++) //size is 9
    for(int j=0;j<SIZE;j++)
        ar1[k][j] = buttons[k][j].getText();

これが、ArrayListが私が推測するように見えるはずです。

ArrayList<ArrayList<String>>ar1 = new ArrayList<ArrayList<String>>();

しかし、getメソッドを使用できないため、非常に混乱します。..その方法がわかりません。

4

4 に答える 4

2

これを試してみてください:ar1.get(k).get(j)

最初get()はインデックスでArrayListを取得しますk; 2番目get()は必要な文字列を取得します。

文字列をに設定する場合は[k, j]、を使用できますar1.get(k).set(j, str)。もちろん、ar1.get(k)nullにすることはできません。ar1.add(new ArrayList<String>());そのインデックスで初めてArrayListを使用するときのように、ArrayListを追加または設定する必要があります。

同様に、ar1.get(k).add(str)ArrayListの要素が少なすぎる場合は、インデックスkのArrayListの最後にstrを追加するために使用できます。

于 2012-12-11T01:15:34.580 に答える
2

この方法を試してください

List<List<String>>ar1 = new ArrayList<>();
//lets say we want to have array [2, 4]
//we will initialize it with nulls
for (int i=0; i<2; i++){
    ar1.add(new ArrayList<String>());
    for(int j=0; j<4; j++)
        ar1.get(i).add(null);
}
System.out.println("empty array="+ar1);

//lets edit contend of that collection
ar1.get(0).set(1, "position (0 , 1)");
ar1.get(1).set(3, "position (1 , 3)");
System.out.println("edited array="+ar1);

//to get element [0, 1] we can use: ar1.get(0).get(1)
System.out.println("element at [0,1]="+ar1.get(0).get(1));

出力:

empty array=[[null, null, null, null], [null, null, null, null]]
edited array=[[null, position (0 , 1), null, null], [null, null, null, position (1 , 3)]]
element at [0,1]=position (0 , 1)
于 2012-12-11T01:33:38.393 に答える
1

Listを宣言するときにtypeを使用することは常に良い習慣ArrayListです。だから代わりに

ArrayList<ArrayList<String>>ar1 = new ArrayList<ArrayList<String>>();

使用する

List<List<String>>ar1 = new ArrayList<List<String>>();

.add(element)メソッドを使用して、配列リストに要素を簡単に追加できます。リストメソッドの完全なリストについては、これまでに役立つjavadocをお読みください。もちろん最初は空です。移入を開始するには、1D配列リストを作成する必要があります

List<String> a = new ArrayList<String>()
a.add("element");

次に、1d配列リストを2d配列リストに追加します

ar1.add(a);

2Dリストに要素を挿入するには、挿入する1D配列リストの位置にアクセスしてから、を実行する必要があります.add(String)

ar1.get(0).add("newly added element"); //will get the first list then append the string to that list

2Dリストの要素を取得するのと同じです

ar1.get(0).get(0); //will get the first lis then get the first element of the pulled list
于 2012-12-11T01:41:43.373 に答える
0

2次元配列の方がおそらくより良い抽象化ですが、他の理由でArrayListのArrayListを作成したい場合は、それを行うことができます。行に要素を追加する前に、行自体を追加する必要があることを覚えておいてください。

//Initialize the rows
ArrayList<ArrayList<String>> ar1 = new ArrayList<ArrayList<String>>
for (int i=0; i<SIZE; i++) {
    ar1.add(new ArrayList<String>());
    for (int j=0; j<SIZE; j++) {
        ar1.get(i).set(j, "");
    }
}

//Now setting a value works
ar1.get(row).set(column, value);

//As does getting one
String s = ar1.get(row).get(column);
于 2012-12-11T01:32:51.790 に答える