0

どちらもサイズ変更可能な Arraylist 内の整数配列にアクセスするにはどうすればよいですか?

私はこれまでにこのコードを持っています:

List<Integer[]> vertices_passed = new ArrayList<Integer[]>();

vertices_passedそして、整数配列に要素を追加して追加したいと思います。

このようなもの:

vertices_passed.get(certain_index).set(index_of_integer_array, Integer.valueof(9))

ArrayLists を使用して、次のようなデータ構造を作成するより良い方法はありますか?

ArrayList {
    [0]
        [0] A
        [1] B
    [1]
        [0] A
        [1] C
        [2] F
        [3] G
    [2]
        [0] D
        [1] C
        [2] F
        [3] G
        [4] H
    [3]
        [0] A
        [0] D
        [0] I

また、内部配列に要素を追加するにはどうすればよいですか?

ありがとう

4

4 に答える 4

2

次のようにできます。

package com.sandbox;


import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<Integer[]> dt = new ArrayList<>();
        dt.add(new Integer[2]);
    }
}

しかし、コメントが言及しているように、これは使用するのにかなり不便です。その理由は、配列のサイズを簡単に変更できないためです。それらを大きくしたり小さくしたりしたい場合は、それらを再作成して要素をコピーする必要があります。

より良い方法は次のようになります。

package com.sandbox;


import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<List<Integer>> dt = new ArrayList<>();
        dt.add(new ArrayList<Integer>());
        dt.get(0).add(1);
    }
}

ArrayListは、その名前が示すように、配列によって支えられています。それらは(おそらく、ソースを見ていないのですが)あなたが達成しようとしていることを正確に抽象化したものです。それらを使用するときに、下位レベルの詳細について考える必要はありません。

于 2013-09-16T22:15:09.510 に答える
1

次を使用できます: ArrayList<ArrayList<Integer>>?

次に、次のような要素を追加するだけです。

ArrayList<ArrayList<Integer>> structure = new ArrayList<ArrayList<Integer>>();
structure.add(new ArrayList<Integer>());//add empty array
structure.get(index0).add(value));

仕組み:

最初に、他の配列リストを格納する ArrayList を作成します。

次に、最初の配列リストのインデックス0に 2 番目の配列リストを追加します。

グラフィカルに次のように見ることができます

+---+
|   |
| o |
|   |
+---+

正方形は要素が 1 つの ArrayList であり、o要素がゼロの arrayList です。

structure.get(0)大きなArrayListの最初の要素にアクセスすると述べた場合、グラフィカルに返されoます。add次に、そのオブジェクトのメソッド ( ) を呼び出し、o値を追加します。

したがって、構造は次のようになります。

+---------+
|         |
| +-----+ |
| |value| |
| +-----+ |
|         |
+---------+

コマンドを繰り返すと、次のようになります。

+---------------+
|               |
| +-----+-----+ |
| |value|value| |
| +-----+-----+ |
|               |
+---------------+
于 2013-09-16T22:15:12.233 に答える
0

これはうまくいきます:

ArrayList<ArrayList<Integer>> vertices_passed = new ArrayList<ArrayList<Integer>>();

vertices_passed.get(certain_index).set(index_of_integer_array, 9)

行う必要はありません: Integer.valueof(9)。Java がここで自動変換を行うため、9 だけで十分です。

于 2013-09-16T22:16:29.607 に答える