我不熟悉ArrayLists,我需要一些基本的功能

时间:2014-11-11 19:01:44

标签: java arraylist

我有一个2D ArrayList

List<List<String>> transitionTable = new ArrayList<List<String>>()

如果我是正确的,那就添加“行”(如果我错了,请纠正我)

transitionTable.add(new ArrayList<String>())

我如何添加相当于一列?使用像这样的for循环?:

for (int i = 0; i < transitionTable.get(0).size(); i++)
{
    transitionTable.get(i).add("something");    
}

编辑:现在无法弄清楚为什么它会在某一点之后停止添加,它始终处于索引状态 i =任何东西(取决于我迭代循环的次数“ j = 1(总是)

我忘了提到我的目标是nxn 2d arraylist(基本上是一个方格)

到目前为止,这是我的代码:

  transitionTable.add(new ArrayList<String>());   //Adds a new row
    if (transitionTable.size() == 1)
    {
        transitionTable.get(0).add("NULL");     //Adds a new column.
    }

    else 
    {
        for (int i = 0; i < transitionTable.get(0).size(); i++)
        {
            transitionTable.get(i).add("NULL");             //Adds a new column (needs to iterate for each row to create something like a column)

        }
    }

3 个答案:

答案 0 :(得分:0)

我建议使用临时“引用”ArrayList,如下所示:

List<List<String>> templist = new ArrayList<List<String>>();
for(List<String> list1 : transitionTable) {
    list1.add("String whatever");
    templist.add(list1);
}
transitionTable = templist;

修改:意外过早发布。

答案 1 :(得分:0)

目前,每次迭代都会在第一列中添加一个值,因为它们是空的;

添加三个arraylists后;

transitionTable 
 - ArrayList[0] - []
 - ArrayList[1] - []
 - ArrayList[2] - []

使用你的循环后;

transitionTable 
 - ArrayList[0] - [something] 
 - ArrayList[1] - [something] 
 - ArrayList[2] - [something]

但是当你为每个列表添加更多项目时,你需要专门编辑arraylist中的位置!正如大卫华莱士所说,你很接近,我希望上述信息有所帮助!

答案 2 :(得分:0)

Java List(和ArrayList只是一种实现)是一种表示事物列表的方法,例如:

  • 字符串:〖&#34;这&#34; &#34;也就是说&#34; &#34;另一个字符串&#34; &#34;哇&#34; 〗
  • 整数:〖15 208 -632 17 999 5〗
  • 其他对象,您可以用课程描述的任何内容,例如AnimalContact

将它们视为纸上列表。他们有订单(但不一定排序),可以添加新项目,删除项目,您可以通过索引访问它们或按顺序迭代它们。

那么List的{​​{1}}到底是什么样的?基本上,这样的事情:

〖&#34;这&#34;,&#34;那&#34; 〖&#34;〗东西&#34; 〖〗〖&#34;〗A&#34; &#34;一束&#34; &#34;中&#34; &#34;几个&#34; 〗

这是四个项目的列表。每个项目都是一个字符串列表。注意一些重要的事情:它里面的列表仍然是列表,它们彼此独立,就像整数列表中的数字一样。因此,内部的每个列表都可以有不同数量的项目。

如果要使用列表列表来表示表格,请务必记住这一点。表是每行中具有相同数量项的对象。你有一个专栏的概念。在Excel中,您可以将列一起复制到其他位置。

使用列表列表并没有为您提供等长行和可分离列的概念。至少,不是直接的。如果你用它来表示一个表,你应该把它包装在一个类中,这个类确保每次扩展一行时,所有其他的都被扩展,并允许你做一些事情,比如返回整列或删除整列

它将通过循环遍历行并分别对每个子列表执行操作来实现。

你可以使用列表列表作为一个表,即使没有像上面那样包装它,如果你实际上并不需要所有这些操作,你只需要将一个表的基本实现作为其他内容的一部分。你仍然需要注意填写和检索&#34;列&#34;通过循环遍历行并访问每个行上的所需列。