Как задать список<Список> в Java

#java #arrays #arraylist

Вопрос:

У меня есть следующая переменная:

 List<List<String>> selection = Lists.newArrayList();
 

Где после того, как я сделаю свои добавления, чтобы заполнить selections

Я хочу изменить одну из записей с помощью функции .set следующим образом:

 selection.set(10, "modifiedentry");
 

Но я получаю ошибку, когда я предоставляю строку, а не список

Как мне предоставить Список в моем случае?

Комментарии:

1. Если вам нужен одноэлементный список фиксированной длины, List.of("modifiedentry") это должно сработать.

2. Во-первых, какую реализацию списка вы хотите предоставить? Во-вторых, если это то, что вы хотите делать, зачем беспокоиться о структуре списка списков?

3. selection это список списков, поэтому вы должны добавить в него списки. В 10-й позиции вы пытаетесь установить строку, поэтому вы получаете сообщение об ошибке

Ответ №1:

Чтобы установить одно значение в каждом списке, вы могли бы сделать

 selection.forEach(element -> element.set(10, "modifiedentry"));
 

Чтобы установить значение одного элемента, вы можете сделать что-то вроде

 selection.get(0).set(10, "modifiedentry");
 

Ответ №2:

В общем, когда вы делаете что-то вроде следующего:

 List<List<String>> selection = new ArrayList<>();
selection.set(10, "modifiedentry");
 
  • Вам нужно добавить список, а не строку в selection
 selection.add(List.of("modifiedentry"));
 

Если вы хотите сделать этот добавленный список изменяемым, передайте его ArrayList<>() конструктору перед добавлением.

 selection.add(new ArrayList<>(List.of("modifiedentry")));
 

Вы не можете set использовать определенный индекс, если только этот индекс уже не содержит элемент.

  • Поэтому, если выделение пустое, вы не можете этого сделать
 selection.set(10,List.of("modifiedentry"));
 

если только не существуют пункты с 0 по 10. Вы получите IndexOutOfBoundsException

Ответ №3:

ваш список имеет тип — список строк. Поэтому, чтобы изменить значение, вам нужно ввести список строк во втором параметре набора методов()

 selection.set(10, Arrays.asList(new String [] {"modifiedentry"}));