在循环内创建多个列表

时间:2013-06-26 18:10:20

标签: java loops arraylist

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

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

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

4 个答案:

答案 0 :(得分:2)

也许这就是你要找的东西。

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

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

答案 1 :(得分: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")

答案 2 :(得分:0)

改为List<List<MyItem>>并将其填入循环

答案 3 :(得分: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);