如何在Java中动态命名对象?

如何在Java中动态命名对象?,java,dynamic,arrays,object,Java,Dynamic,Arrays,Object,假设我需要创建一系列String[]对象 我知道,如果我想制作一个名为“test”的字符串数组来容纳3个字符串,我可以这样做 字符串[]测试=新字符串[3] 但假设我需要制作一系列这样的数组,我想把它们命名为,1,2,3,4,5。。。等等,不管我需要多少,我不知道我需要多少 如何实现与此类似的效果: for (int k=0; k=5; k++){ String[] k = new String[3]; } 这将创建5个名为1到5的字符串数组。基本上,我希望能够创建名称由其他函数决定的数组对

假设我需要创建一系列String[]对象

我知道,如果我想制作一个名为“test”的字符串数组来容纳3个字符串,我可以这样做

字符串[]测试=新字符串[3]

但假设我需要制作一系列这样的数组,我想把它们命名为,1,2,3,4,5。。。等等,不管我需要多少,我不知道我需要多少

如何实现与此类似的效果:

for (int k=0; k=5; k++){ 
String[] k = new String[3];
}
这将创建5个名为1到5的字符串数组。基本上,我希望能够创建名称由其他函数决定的数组对象。为什么我不能这样做?我是不是太傻了?

Java中没有任何“变量”(即具有变量名的变量),但您可以创建映射或数组来处理特定问题。当您遇到一个问题,使您认为“我需要我的变量动态更改名称”时,您应该尝试并考虑“关联数组”。在Java中,可以使用
Map
s获得关联数组

也就是说,您可以保留阵列列表,类似于:

List<String[]> kList = new ArrayList<String[]>();
for(int k = 0; k < 5; k++){
   kList.add(new String[3]);
}
List kList=new ArrayList();
对于(int k=0;k<5;k++){
添加(新字符串[3]);
}
或者,也许离你要找的东西更近一点,你可以使用地图:

Map<Integer,String[]> kMap = new HashMap<Integer,String[]>();
for(int k = 0; k < 5; k++){
  kMap.put(k, new String[3]);
}
// access using kMap.get(0) etc..
Map kMap=newhashmap();
对于(int k=0;k<5;k++){
kMap.put(k,新字符串[3]);
}
//使用kMap.get(0)等进行访问。。

在Java中最接近您的是:

Map<String, String[]> map = new HashMap<String, String[]>();

for (int k=0; k=5; k++){ 
    map.put(Integer.toString(k), new String[3]);
}

// now map.get("3") will get the string array named "3".
Map Map=newhashmap();
对于(int k=0;k=5;k++){
put(Integer.toString(k),新字符串[3]);
}
//现在map.get(“3”)将获得名为“3”的字符串数组。

请注意,
“3”
不是一个变量,但与
映射
对象结合使用时,它的工作方式类似于一个变量。。。有点像。

你想做的就是元编程——编程一个Java不支持的程序(它只允许通过注释来实现元数据)。但是,对于这样一个简单的用例,您可以创建一个方法,该方法将接受int并返回所需的字符串数组,例如通过访问数组数组数组。如果你想要更复杂的命名约定,考虑SWTITCH语句很少的值,并映射更多的值。对于具有自定义名称的固定数量的值,定义一个枚举,该枚举可以作为参数传递。

其他人已经给出了很好的答案,但为了涵盖所有基础,Java确实有数组数组

String[][] k = new String[5][3];
k[2][1] = "Hi!";
现在您没有名为
k1
k2
k3
k4
k5
的5个变量,每个变量都是
字符串[3]


…但是您确实有一个由
String[]
k[0]
k[1]
k[2]
k[3]
k[4]
组成的数组,每个数组都是
String[3]
,对于这种行为您考虑的用例是什么?也许知道我们可以帮助您找到一种Java方法来做您想做的事情,而不需要动态命名变量。