我想初始化很多数组。数组的名称遵循像array12,array13,array14,...... array19,array22,array23 ........... array99这样的序列。 实际上我有一个包含一些整数的数组1,一个包含一些整数的数组2,我将两者中的公共整数转换为array12。(类似于array2,3,4..9) 什么是最好的方法。 链表,映射,矢量? 请记住,我的程序经常使用子集(例如array12)。
我认为最好的方法是存储在数组中,因为我不必一直浏览链接列表(或任何其他方式)。 但我不能写
public int array12=new int[10];
public int array13=new int[10];
在代码中间,当我的i(某个整数)= 1且j = 2时,我想访问array12。 那我怎么办呢?..
我实际上是想解决这个问题。question page 请给我与我提出的问题相关的答案,而不是fb问题的答案。 我想自己做。
答案 0 :(得分:2)
您需要进入更高维度的数组 - 具体而言,您似乎正在寻找3D数组。设计中的两个整数(即1
中的2
和array12
)应该是3D数组的前两个索引。
int[][][] array = new int[10][][];
for (int i = 0; i != 10 ; i++) {
array[i] = new int[10][];
for (int j = 0 ; j != 10 ; j++) {
array[i][j] = new int[10];
}
}
现在访问设计array34[i]
的内容看起来像array[3][4][i]
。
答案 1 :(得分:0)
您需要使用地图 - 您不能(轻松)动态命名:
public final Map<Stiring, Integer[]> myMap = new HashMap<>(){
{
put("array1", new Integer[10]);
put("array2", new Integer[10]);
put("array3", new Integer[10]);
...more arrays
}
};
您可以使用带有实例初始化技巧的匿名类将这些数组放入地图中,如上所述。
然后,您可以使用Map.get
final Integer[] myArray = myMap.get("array1");
修改强>
根据@ twain249的评论,您可以使用循环填充地图:
public final Map<Stiring, Integer[]> myMap = new HashMap<>(){
{
for(int i=0;i<someNumber;++i) {
for(int j=0;j<someOtherNumber;++j) {
put("array" + i + "" + j, new Integer[10]);
}
}
}
};
答案 2 :(得分:0)
这是不可能的。我的方法是创建和ArrayList以及你想要动态创建的每个数组,只需添加到ArrayList中的正确位置。
以下是代码示例:
ArrayList<int[]> listOfArrays = new ArrayList<int[]>(); // Creates a list of arrays.
int[] someArrayFromListOfArrays = listOfArrays.get(index); // Gets an array from arraylist
listOfArrays.add(new int[]); // Adds a new array to the collection
listOfArrays.add(index, new int[]); // This will insert an array into a specified location in the list
这应该符合您的需求。
以下是ArrayList的规范。
希望有所帮助