以名称String形式访问Java变量

San*_*air 4 java

ArrayList用名字声明了10 秒arraylist1,arraylist2依此类推.

我想在for循环中动态更改变量名称:

for (int i = 1; i < 5; i++)
{
   arraylist + (i).clear();
   //arraylist1.clear();
   //arraylist2.clear();
   //arraylist3.clear();
   //arraylist4.clear();
   //arraylist5.clear();

}
Run Code Online (Sandbox Code Playgroud)

可能吗?如果是这样的格式是什么?

Nic*_*kin 8

您无法使用其名称作为字符串来处理变量(除了反射,但这对此任务来说太过分了).

您可以将所有这些ArrayList添加到另一个List.这更灵活,因此是更好的选择.

List<List<ContactDetails>> lists2 = new ArrayList<List<String>>();
for (int i = 0; i < 10; i++) {
    lists2.add(new ArrayList<ContactDetails>());
}
Run Code Online (Sandbox Code Playgroud)

或者将它们添加到数组并通过数组索引访问它们:

@SuppressWarnings("unchecked")
List<ContactDetails>[] lists = new List[10];
for (int i = 0; i < lists.length; i ++) {
    lists[i] = new ArrayList<ContactDetails>();
}
Run Code Online (Sandbox Code Playgroud)

现在:

for (int i = 1; i < 5; i++)
{
   lists[i].clear();
   lists2.get(i).clear();
}
Run Code Online (Sandbox Code Playgroud)

由于List和数组都是Iterable,您可以使用foreach语法:

for (List list : lists)
{
   list.clear();
}

for (List list : lists2) {
    list.clear();
}
Run Code Online (Sandbox Code Playgroud)

如果您知道如何使用Lambdas/Stream API实现相同功能,请添加答案.