如何在Java中动态命名对象?
假设我需要创建一系列String[]对象 我知道,如果我想制作一个名为“test”的字符串数组来容纳3个字符串,我可以这样做 字符串[]测试=新字符串[3] 但假设我需要制作一系列这样的数组,我想把它们命名为,1,2,3,4,5。。。等等,不管我需要多少,我不知道我需要多少 如何实现与此类似的效果:如何在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的字符串数组。基本上,我希望能够创建名称由其他函数决定的数组对
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方法来做您想做的事情,而不需要动态命名变量。