0

行数ではなく、列数がすでに指定されている 2D ArrayList を作成したいと考えています。たとえば、最初に 26 列で 0 または 1 列のテーブルを作成したい場合、別の処理を繰り返すたびに、そのループに伴って行数が増加します。

行数 (ArrayList の ArrayList の長さ) を増やすと、26 個の配列すべても同様に増やしたいと考えています。その構文は何ですか?

そして、特定の場所にどのようにインデックスを付けたり、新しいアイテムを追加したりしますarray[2][3] = itemか?

ところで、これは NFSA テーブルから変換された DFSA テーブルです

4

2 に答える 2

2

基本的に次のようなリストのリストを作成できます。

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

次に、26 列を追加します。

for(int i = 0; i < 26; i++)
{
    table.add(new ArrayList<String>());
}

addToColumn(int column, String value, List<List<String>> table)次に、次のようなことを行うメソッドを呼び出すことができます。

for(int i = 0; i < table.size(); i++)
{
    if(i == column)
    {
        table.get(i).add(value);
    }
    else
    {
        table.get(i).add("");
    }
}

これにより、一緒に成長するリストを持つことができます。もちろん、上記の私の仮定は、一度に 1 つの要素を入力するということです。

または、次のようにすることもできます。

public void addToColumns(Map<int, String> data, List<List<String>> table)
{
    for(int key : data.keyset())
    {
        table.get(key).add(data.get(key));
    }

    for(int i = 0; i < table.size(); i++)
    {
        if(!data.containsKey(i))
        {
            table.get(i).add("");
        }
    }
}

上記のアルゴリズムでは、項目を複数の列に追加し、残りを空の文字列で埋めることができます。これにより、最終的に同じ長さの行になるはずです。また、マップは、キーが列番号であるキーと値のペアを格納するために使用され、値はそこにスローしたい任意の文字列になります。これにより、一度に 1 行ずつテーブルに入力できます。

于 2013-08-21T06:22:26.203 に答える
-1

行数だけを指定するだけで、配列を簡単に作成できます。

int[][] array = new int[4][];

これで、配列を定義したものの転置として扱うことができるので、2 行目の 3 列目に要素を入力したい場合は、転置として入力できます。

array[3][2]=5;
于 2013-08-21T06:27:48.950 に答える