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("");
    }
}

这应该允许您拥有一起增长的列表。当然,我在上面的假设是您将一次输入一个元素。

或者,您可以执行以下操作:

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("");
        }
    }
}

上述算法应该允许您将项目添加到多个列,同时用空字符串填充其余部分。这应该允许您以相同长度的行结束。此外,该映射将用于存储键值对,其中键是列号,值将是您想要放入其中的任何字符串。这将允许您一次填充一行。

于 2013-08-21T06:22:26.203 回答
-1

您可以通过仅给出行数来简单地创建一个数组:

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

现在您可以将您的数组视为您定义的内容的转置,因此如果您想在第 2 行的第 3 列输入一个元素,您可以输入为转置,即

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