【问题标题】:Creating multiple lists inside a loop在循环内创建多个列表
【发布时间】:2013-06-26 18:10:20
【问题描述】:

我想在循环中动态创建ArrayLists,例如:

for (i = 0; i < 3; i++) {
    List<myItems> d(i) = new ArrayList<myItems>();
}

我想要做的就是在一个循环中创建 3 个这样的列表。我可以这样做吗?

【问题讨论】:

  • 是的,你可以这样做(你不小心输入了两次new),但它什么也没做。您只是在每次循环中创建一个新列表而不使用它。你到底想完成什么?
  • “我可以这样做吗?”你有我的许可。
  • 动态数组列表是什么意思?
  • @jahroy 我想在一个循环中创建 3 个不同的数组列表,例如 d1、d2 和 d3。
  • 您当前的代码创建了 3 个不同的 ArrayList,它只是将它们全部分配给同一个变量,因此每个都被覆盖。如果您想要 3 个不同的列表,则需要 3 个不同的变量。

标签: java loops arraylist


【解决方案1】:

也许这就是你要找的。​​p>

ArrayList<myItem>[] d = (ArrayList<myItem>[]) new ArrayList[3];

for (int i = 0; i < 3; i++) {
    d[i] = new ArrayList<myItems>();
}

【讨论】:

    【解决方案2】:

    不可以:变量名只是为了方便程序员,在你的代码编译后不会被跟踪,所以这种“动态变量命名”是不允许的。您必须找到另一种方法来跟踪您的列表,例如将字符串标识符映射到列表的Map&lt;String, List&lt;Item&gt;&gt;

    Map<String, List<Item>> map = new HashMap<String, List<Item>>()
    map.put("d1", new ArrayList<Item>());
    ...
    

    然后访问"d1"对应的列表,例如你可以使用map.get("d1")

    【讨论】:

      【解决方案3】:

      改用List&lt;List&lt;MyItem&gt;&gt; 并将其填充到循环中

      【讨论】:

        【解决方案4】:

        如果你这样做:

        for(i=0;i<3;i++){
          List<myItems> d = new ArrayList<myItems>();
        }
        

        您将创建一个新的数组列表三次。但是每次你将它存储到一个新创建的引用 d 并且一旦你离开 for 循环的范围,那个引用就会消失。

        您可能正在寻找的是:

        List<List<myItems>> d = new ArrayList<List<myItems)>();
        for(i=0;i<3;i++){
          d.add(new ArrayList<myItems>());
        }
        

        这将创建一个嵌套列表:

        someListOfListsOfMyItems
          subListOfMyItems
            someMyItem
            anotherMyItem
          subListOfMyItems
            someOtherMyItem
            anotherOtherMyItem
          subListOfMyItems
            yetSomeOtherMyItem
            yetAnotherMyItem
        

        可以像这样访问每个子列表:

        d.get(indexOfSublist);
        

        【讨论】:

        • 如何将新项目添加到子列表中? @纳撒尼尔福特
        • d.get(idx).add(aNewItem);,其中idx 是您要添加到的子列表的索引。 @ohlala
        猜你喜欢
        • 1970-01-01
        • 2013-07-16
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        • 1970-01-01
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多