您无法使用其名称作为字符串来处理变量(除了反射,但这对此任务来说太过分了).
您可以将所有这些ArrayList添加到另一个List.这更灵活,因此是更好的选择.
List> lists2 = new ArrayList>();
for (int i = 0; i < 10; i++) {
lists2.add(new ArrayList());
}
或者将它们添加到数组并通过数组索引访问它们:
@SuppressWarnings("unchecked")
List[] lists = new List[10];
for (int i = 0; i < lists.length; i ++) {
lists[i] = new ArrayList();
}
现在:
for (int i = 1; i < 5; i++)
{
lists[i].clear();
lists2.get(i).clear();
}
由于List和数组都是Iterable,您可以使用foreach语法:
for (List list : lists)
{
list.clear();
}
for (List list : lists2) {
list.clear();
}
如果您知道如何使用Lambdas / Stream API实现相同功能,请添加答案.