我想在循环中动态创建ArrayList
,如:
for (i = 0; i < 3; i++) {
List<myItems> d(i) = new ArrayList<myItems>();
}
我想做的就是在循环中创建3个这样的列表。我能这样做吗?
答案 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);