I have declared 10 ArrayLists with names arraylist1, arraylist2 and so on.
I want to dynamically change variable name in a for loop:
for (int i = 1; i < 5; i++)
{
arraylist + (i).clear();
//arraylist1.clear();
//arraylist2.clear();
//arraylist3.clear();
//arraylist4.clear();
//arraylist5.clear();
}
Is it possible? If so what is format to do so?
You can not address a variable with its name as string (except with reflection, but that's an overkill for this task).
You can add all these ArrayList's to another List. This is more flexible and, thus, a better option.
List<List<ContactDetails>> lists2 = new ArrayList<List<String>>();
for (int i = 0; i < 10; i++) {
lists2.add(new ArrayList<ContactDetails>());
}
Or add them to an array and access them by array indexes:
@SuppressWarnings("unchecked")
List<ContactDetails>[] lists = new List[10];
for (int i = 0; i < lists.length; i ++) {
lists[i] = new ArrayList<ContactDetails>();
}
Now:
for (int i = 1; i < 5; i++)
{
lists[i].clear();
lists2.get(i).clear();
}
As both List and array are Iterable, you can use the foreach syntax:
for (List list : lists)
{
list.clear();
}
for (List list : lists2) {
list.clear();
}
If the ArrayLists are class properties, you can achieve this with reflection:
((ArrayList) getClass().getField("arraylist" + i).get(this)).clear();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With