Java - заполнить значения списка другим списком в качестве параметра функции, используя рекурсию - PullRequest
1 голос
/ 08 апреля 2019

В моей Java-функции я хочу использовать список в качестве параметра, например List 1 = (a, b, c).Где каждое значение является значением из другого списка, Список 2 = (1, 2, 3).Теперь я хочу вызывать мою функцию с каждой возможной комбинацией, чтобы заполнить ее.

Как a = 1, b = 1, c = 1;а = 1, б = 2, с = 1;a = 1, b = 3, c = 1 и т. д.

Проблема в том, что длина списка изменяется при каждом вызове функции.

Обычно я использовал бы два для циклов,или простая функция с рекурсией.Но я не знаю, как именно справиться с изменением длины списка.Возможно, мой вопрос был широким, моя проблема в том, чтобы не знать, как изменить только одно значение в списке, пока не будет вызвана каждая комбинация.

Функция, которую я представляю, выглядит примерно так: (Я знаю функцию сцикл for не будет работать, я должен использовать итератор)

List 1 = (a,b,c);
List 2 = (1,2,3);
list1.set(a, 1);
list1.set(b, 1);
list1.set(c, 1);

functionFillList(List list1){
  for(Element e : list1){
   //do something
   //in some cases add elements to list2
  }
  //change one value of list1
  functionFillList(list1);
 //if every combination was called -> end function
}

1 Ответ

0 голосов
/ 08 апреля 2019

Использование цикла для изменения данных списка вызовет ошибку одновременного изменения, используйте Iterator вместо цикла для изменения данных списка.Итератор позволяет изменять данные.

void functionFillList(List list1){
      Iterator<String> iter = list1.iterator();
      while(iter.hasNext()){
       //do something
      }
      //change one value of list1
      functionFillList(list1);
     //if every combination was called -> end function
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...