我想初始化很多数组。数组的名称遵循类似array12、array13、array14、……的序列,。。。。。。array19,array22,array23…………..array99。实际上,我有一个数组1,它包含一些整数,一个数组2,它包含了一些整数,我希望两个数组中的公共整数都是数组12最好的方法是什么。链表,映射,矢量??请记住,我的程序非常频繁地使用子集(例如array12)。
我认为最好的方法是存储在数组中,因为我不必一直在链表中(或任何其他方式)。但我不会写
public int array12=new int[10];
public int array13=new int[10];
更重要的是,当我的i(某个整数)=1和j=2时,我想访问array12。那么我该怎么做呢?。。
实际上我正在努力解决这个问题请给我与我提出的问题有关的答案,而不是联邦调查局问题的答案。我想自己做。
您需要进入更高维度的数组,特别是,您似乎正在寻找一个3D数组。设计中进入名称的两个整数(即array12
中的1
和2
)应该是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]
。
这是不可能的。我的方法是创建和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的规格。
希望它能帮助
您需要使用映射-您无法(轻松)动态命名事物:
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]);
}
}
}
};