链表-在java中对数组名称进行动态初始化



我想初始化很多数组。数组的名称遵循类似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中的12)应该是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]);
      }
    }
  }
};

相关内容

  • 没有找到相关文章

最新更新