我想ArrayList
在循环中动态创建 s,例如:
for (i = 0; i < 3; i++) {
List<myItems> d(i) = new ArrayList<myItems>();
}
我想做的就是在一个循环中创建 3 个这样的列表。我可以这样做吗?
也许这就是你要找的。
ArrayList<myItem>[] d = (ArrayList<myItem>[]) new ArrayList[3];
for (int i = 0; i < 3; i++) {
d[i] = new ArrayList<myItems>();
}
不可以:变量名只是为了方便程序员,在你的代码编译后不会被跟踪,所以这种“动态变量命名”是不允许的。您将不得不找到另一种方法来跟踪您的列表,例如Map<String, List<Item>>
将字符串标识符映射到列表:
Map<String, List<Item>> map = new HashMap<String, List<Item>>()
map.put("d1", new ArrayList<Item>());
...
然后访问对应的列表"d1"
,例如您可以使用map.get("d1")
.
如果你这样做:
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);
取而代之List<List<MyItem>>
并将其填充到循环中