gpt4 book ai didi

java - 通过名称作为字符串访问 Java 变量

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:44 24 4
gpt4 key购买 nike

我已经声明了 10 个 ArrayList,名称为 arraylist1arraylist2 等等。

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

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

}

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

最佳答案

您不能使用其名称作为字符串来寻址变量(反射除外,但这对于此任务来说太过分了)。

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

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

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

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

现在:

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

因为List和array都是Iterable , 您可以使用 foreach语法:

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

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

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

关于java - 通过名称作为字符串访问 Java 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com