0

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

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

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

4

4 回答 4

3

也许这就是你要找的。

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

for (int i = 0; i < 3; i++) {
    d[i] = new ArrayList<myItems>();
}
于 2013-06-26T18:34:19.740 回答
1

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

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

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

于 2013-06-26T18:18:13.480 回答
0

如果你这样做:

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);
于 2013-06-26T18:32:47.070 回答
0

取而代之List<List<MyItem>>并将其填充到循环中

于 2013-06-26T18:11:24.033 回答