Есть ли какая-нибудь возможность автоматически создать несколько списков массива с помощью цикла?

#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);
}
  

Создаст несколько списков внутри списка.