Подтвердить что ты не робот

Как добавить элементы в List при использовании Arrays.asList()

Мы не можем выполнить операцию <Collection>.add или <Collection>.addAll для коллекций, полученных нами из Arrays.asList. Разрешена только операция удаления.

Итак, если я столкнулся с сценарием, когда мне нужно добавить новый элемент в List, не удаляя предыдущие элементы в List?. Как я могу достичь этого?

4b9b3361

Ответ 1

Создайте новый ArrayList с помощью конструктора:

List<String> list = new ArrayList<String>(Arrays.asList("a", "b"));

Ответ 2

Один из способов - создать новый ArrayList:

List<T> list = new ArrayList<T>(Arrays.asList(...));

Сделав это, вы можете изменить list, как вам удобно.

Ответ 4

Arrays.asList() генерирует список, который фактически поддерживается массивом, и представляет собой массив, который преобразуется как список. Вы можете использовать его в качестве списка, но вы не можете выполнять определенные операции над ним, например, добавлять новые элементы. Поэтому лучший вариант - передать его конструктору другого списка obj следующим образом:

List<T> list = new ArrayList<T>(Arrays.asList(...));

Ответ 5

Вы можете обойти промежуточный ArrayList с потоками Java8:

    Integer[] array = {1, 2, 3};
    List<Integer> list = Streams.concat(Arrays.stream(array),
                                        Stream.of(4)).collect(Collectors.toList());

Это должно быть довольно эффективно, поскольку оно может просто перебирать массив, а также предварительно назначать целевой список. Это может быть или не быть лучше для больших массивов. Как всегда, если это важно, вы должны измерять.