0

我想初始化很多数组。数组的名称遵循数组12,数组13,数组14,......数组19,数组22,数组23............数组99的顺序。实际上我有一个包含一些整数的array1,一个包含一些整数的数组2,我希望array12 中的公共整数都有。(类似array2,3,4..9)最好的方法是什么。链接列表,映射,向量??请记住,我的程序非常频繁地使用了子集(例如 array12)。

我认为最好的方法是存储在数组中,因为我不必一直遍历链接列表(或任何其他方式)。但我不会写

    public int array12=new int[10];
    public int array13=new int[10];

此外,当我的 i(some integer)=1 和 j=2 我想访问 array12 时,在代码中间。那我该怎么做呢?..

我实际上是想解决这个问题。问题页面 请给我与我提出的问题相关的答案,而不是对 fb 问题的答案。我想自己做。

4

3 回答 3

2

您需要进入更高维度的数组 - 具体来说,您似乎正在寻找一个 3D 数组。设计中进入名称的两个整数(即12in 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]

于 2013-02-23T11:59:21.260 回答
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]);
      }
    }
  }
};
于 2013-02-23T11:58:59.333 回答
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的规范。

希望能帮助到你

于 2013-02-23T12:01:45.943 回答