我想使用Eclipse制作动态程序。对于这个程序,我需要定义几个(实际上太多~200个)集合。我研究过并发现我可以使用ArrayLists来存储整数。
在我试图解决的问题中,有T(T是任何整数)我需要创建许多不同的ArrayLists。我需要为T的每个值定义一个唯一的ArrayList。例如,对于T = 3,我需要定义三个不同的ArrayLists,我将能够为每个不同的索引存储整数:
ArrayList T1 = new ArrayList();
ArrayList T2 = new ArrayList();
ArrayList T3 = new ArrayList();
这里的问题是我对如何定义与T一样多的ArrayLists无能为力。我试图创建一个“for循环”以初始化这些变量,但正如我预期的那样结果并不好(只是因为我需要为每个ArrayList使用不同的名称而且我无法改变每个ArrayList的名称)我确信它不会起作用(或者至少我确信我做错了,即使有办法做到这一点 - 我在互联网上搜索找不到的东西)但只是想知道我想要做什么,代码看起来像这样:
for (int i=1; i<T; i++) {
ArrayList T+i = new ArrayList(); //I tried to vary the name of the arraylist by adding the variable "i" next to T.
}
在上面的代码中,我无法实现为ArrayLists定义索引,但请注意,如果我们可以通过向ArrayLists添加索引来实现这一目的,那将非常方便。
由于这是我对动态编程的第一次尝试,我有点失落,我感谢您的所有帮助!提前谢谢。
答案 0 :(得分:1)
您的问题的解决方案之一是创建ArrayLists的ArrayList。如,
ArrayList<ArrayList<Integer>> listOfLists = new ArrayList<>();
但是,如果您使用较旧的JDK,则可能需要使用:
ArrayList<ArrayList<Integer>> listOfLists = new ArrayList<ArrayList<>>();
然后你可以在必要时初始化它们:
for (int i=0; i<T; i++) {
listOfLists.add(new ArrayList());
}
并使用它们:
ArrayList<Integer> firstList = listOfLists.get(0);
对于多维arraylist
HashMap<Integer, ArrayList<ArrayList<Integer>>> map = new HashMap<>();
for (int i=0; i<T; i++) {
map.put(i, new ArrayList<ArrayList<Integer>>());
}
ArrayList<ArrayList<Integer>> tempList = map.get(0);
}
我希望有所帮助。
答案 1 :(得分:0)
如果我理解正确,您需要一个列表列表,例如:
int T = 10;
ArrayList<ArrayList<Integer>> array = new ArrayList<>(T);
for(int i = 0; i < T;i++){
array.add(new ArrayList<>());
}
array.get(i)
您可以获取特定列表以填写您的目的。
答案 2 :(得分:0)
您可以简单地创建一个包含name作为键和arraylist作为值的唯一地图,而不是遍历名称:
HashMap arrayMap = new HashMap();
for(int i = 0; i< 200; i++){
arrayMap.put("T"+i, new ArrayList());
}
修改强> 回答你的问题:
int MAX_Y = 100;
int MAX_X = 100;
HashMap<K, V> arrayMap = new HashMap();
for(int i = 0; i< MAX_X; i++){
for(int x = 0; x < MAX_Y; x++){
arrayMap.put("T_"+i+"_"+x, new ArrayList());
}
}
//To retrive array
arrayMap.get("T_15_20");
答案 3 :(得分:0)
你能试试这段代码吗?
int T=10;
ArrayList[] arrayLists = new ArrayList[T];
for(int i=0;i<arrayLists.length;i++){
arrayLists[i] = new ArrayList();
}
您稍后可以将任何ArrayList作为arrayLists [i]访问,其中i将是列表编号。
答案 4 :(得分:0)
如果要为每个键存储2D列表,可以使用PFXImportCertStore:
final ListMultimap<Integer, List<Integer>> map = ArrayListMultimap.create();
map.put(7, Arrays.asList(1, 2, 3));
map.put(7, Arrays.asList(4, 5, 6));
map.put(1, Arrays.asList(9));
System.out.println(map); // prints '{1=[[9]], 7=[[1, 2, 3], [4, 5, 6]]}'
或者,如果每个键只需要一个列表,则可以执行以下操作:
final List<List<Integer>> list = new ArrayList<>();
list.add(Arrays.asList(1, 2, 3));
list.add(Arrays.asList(4, 5, 6));
System.out.println(list); // prints '[[1, 2, 3], [4, 5, 6]]'