Внимательно пишите статьи и делитесь ими с душой.
Персональный сайт:yasinshaw.com
Общедоступный номер: технический круг xy
Несколько дней назад я столкнулся с проблемой при использовании метода Arrays.asList:
Я посмотрел исходный код этого метода и обнаружил, что это возвращаемый ArrayList.Как он может не поддерживать операцию удаления?
Позже я внимательно посмотрел исходный код и обнаружил, что этоArrayListне то, что мы обычно используемjava.utilArrayList в пакете, но закрытый внутренний класс в классе Arrays. Этот внутренний класс наследуетAbstractList, но не переопределяет такие методы, как удаление или добавление. Таким образом, его длина неизменна, что также соответствует цели разработки класса Arrays.
Причина использования метода Arrays.asList() состоит в том, чтобы получить список с максимально кратким кодом. Это обычное требование при написании модульных тестов.
После Java 9 вы можете использоватьList.of()вместо метода Arrays.asList(). Но внутри он также возвращает неизменяемый список:
Однако здесь следует отметить, что между ними есть небольшие различия. Например, список, возвращаемый методом Arrays.asList(), может бытьsetОперация, но не List.of().
Если вы хотите использовать эту простоту, но также хотите иметь возможность добавлять или удалять элементы позже, что вам следует делать? Вы можете написать метод самостоятельно, например:
Конечно, уже есть библиотеки с открытым исходным кодом, которые помогут нам в этом! Google Guava предоставляет класс Lists с некоторыми методами newArrayList:
Библиотека Google Guava предоставляет множество полезных классов инструментов, вы можете попробовать их понять и использовать.
Для получения дополнительных статей, пожалуйста, обратите внимание на общедоступный номер: технический круг xy