#java #loops #arraylist
#java #циклы #список массивов
Вопрос:
У меня есть проект по созданию хранилища, и я использую ArrayLists для каждой комнаты. Есть ли какое — либо решение для создания более одного ArrayList в цикле? Я просто хочу уменьшить объем кода. Кавычки / скобки и прочая ерунда не работают. Есть ли какое-нибудь решение для начинающих?
Я пробовал что-то вроде этого.
for(int i=0; i<10; i }{
ArrayLists list[i] = new ArrayLists();
}
ArrayList list0 = new ArrayList();
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
//up to 10
Комментарии:
1. myArrayList.add(новый ArrayList()); но для ограниченного числа массив был бы лучше
2. Тогда ArrayList в ArrayList правильно? я имею в виду вашу первую часть ответа.
3. Проблема с вашим примером заключается в том, что список массивов создается в области действия цикла, когда он завершает итерацию цикла, будет вызван деструктор списка массивов.
4. @SPlatten о да, вы правы. Я забыл об этом.
Ответ №1:
используйте массивы.заполните и избавьтесь от цикла
ArrayList<Integer>[] al = new ArrayList[5];
Arrays.fill(al, new ArrayList<Integer>());
Комментарии:
1. Я думаю, это не сработает, поскольку вы заполняете список целых чисел в списке массива целых чисел (ожидаемые целые числа).
Ответ №2:
Я не совсем уверен, чего вы хотите достичь, но у вас может быть список списков, подобный этому:
ArrayList<ArrayList<>> listOfLists = new ArrayList<>();
for (int i = 0; i < 10; i ) {
listOfLists.add(new ArrayList<String>());
}
Ответ №3:
List<List<Integer>> lists = new ArrayList<List<Integer>>();
for (int i = 0; i < 5; i ) {
List<Integer> list = new ArrayList<>();
lists.add(list);
}
Создаст несколько списков внутри списка.