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

2022-09-03 17:33:00

假设我需要制作一系列 String[] 对象。

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

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

但是假设我需要制作一系列这些数组,并且我希望它们被命名为1,2,3,4,5...等。无论我需要多少,我都不知道我需要多少。

我如何达到与此类似的效果:

for (int k=0; k=5; k++){ 
String[] k = new String[3];
}

这将创建 5 个名为 1 到 5 的字符串数组。基本上,我希望能够创建具有由其他函数定义的名称的数组对象。为什么我似乎不能这样做?我只是在愚蠢吗?


答案 1

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

也就是说,您可以保留数组列表,如下所示:

List<String[]> kList = new ArrayList<String[]>();
for(int k = 0; k < 5; k++){
   kList.add(new String[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..

答案 2

其他人已经提供了很好的答案,但只是为了涵盖所有基础,Java确实有数组数组。

String[][] k = new String[5][3];
k[2][1] = "Hi!";

现在你没有5个变量命名为,,,,每个变量都是一个...k1k2k3k4k5String[3]

...但是你确实有一个数组, , , , , 每个都是 .String[]k[0]k[1]k[2]k[3]k[4]String[3]