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

Sam*_*ern 13 java arrays dynamic object

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

我知道如果我想创建一个名为"test"的字符串数组来保存3个字符串,我就能做到

String [] test = new String [3];

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

我如何实现类似的效果:

for (int k=0; k=5; k++){ 
String[] k = new String[3];
}
Run Code Online (Sandbox Code Playgroud)

这将创建5个名为1到5的字符串数组.基本上我希望能够创建一个名称由其他函数决定的数组对象.我为什么不能这样做?我只是傻了吗?

Mar*_*iot 21

Java中没有任何"变量变量"(即变量名变量),但您可以创建地图或数组来处理您的特定问题.当您遇到一个让您认为"我需要我的变量动态更改名称"的问题时,您应该尝试思考"关联数组".在Java中,您可以使用Maps 获得关联数组.

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

List<String[]> kList = new ArrayList<String[]>();
for(int k = 0; k < 5; k++){
   kList.add(new String[3]);
}
Run Code Online (Sandbox Code Playgroud)

或者也许更接近你所追求的,你可以使用地图:

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..
Run Code Online (Sandbox Code Playgroud)


pol*_*nts 7

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

String[][] k = new String[5][3];
k[2][1] = "Hi!";
Run Code Online (Sandbox Code Playgroud)

现在,你不必有5个变量命名k1,k2,k3,k4,k5,每个都是String[3]...

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