在循环中命名数组

时间:2011-01-09 20:43:18

标签: java arrays variables loops

我离开了我的联盟。

好的,如果我能做到这一点:

int[]teams = new int[3];
for (int i = 0; i < 3; i++)
{
teams[i] = i;
}

我如何做类似的事情,但命名多个数组,即

for (int i = 0; i < 3; i++)
{
int[]i = new int[3];
}

我已经读过你不能用变量命名一个数组,所以我不能只看到如何使用循环生成具有不同名称(基本上不止一个)的数组。


由于

3 个答案:

答案 0 :(得分:3)

您将执行以下操作(Java):

int teams[][] = new teams[3][3]

您将执行以下操作(C ++):

int** teams = new int*[3];
for(int i=0; i<3; i++){
   teams[i] = new int[3];
}

或者你可以做到

int teams[3][3];
for(int i=0; i<3; i++){
    for(int j=0; j<3; j++){
        teams[i][j] = //whatever you want
    }
}

根据以下评论进行修改:

您要找的是MultiMap。你会得到:

MultiMap foo = new MultiMap();

foo.put("Bob", 1);
foo.put("Bob", 2);

等...

答案 1 :(得分:2)

您可以创建一个数组数组(有时称为多维数组):

int [][] arr = new int[137][42];

答案 2 :(得分:1)

您无法动态生成变量名称,但您可以使用Map实现相同的效果:

//Store mappings from array name (String) to int arrays (int[])
Map<String, int[]> namedArrays = new HashMap<String, int[]>();
for (int i = 0; i < 3; i++)
{
  //This is going to be the name of your new array
  String arrayName = String.valueOf(i); 
  //Map an new int[] to this name
  namedArrays.put(arrayName, new int[3]);
}

//If you need to access array called "2" do
int[] array2 = namedArrays.get("2")

这样做的好处是,只要它们位于不同的地图中,您就可以拥有多个具有相同名称的数组。但请注意,当您将两个或多个数组映射到同一映射中的相同名称时,前一个数组将被覆盖(丢失)。