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