Поскольку вы создаете новую изменяемую переменную ArrayList
из возвращенного списка?
List<String> list = new ArrayList<String>(Collections.nCopies(5, "Chinese Virus"));
это, по сути, то же самое, что и
List<String> unmodifiableList = Collections.nCopies(5, "Chinese Virus");
List<String> modifiableList = new ArrayList<>(unmodifiableList);
unmodifiableList.remove(0); // will throw UnsupportedOperationException
modifiableList.remove(0); // will work without issues
В приведенном выше примере modifiableList
is Список, содержащий те же элементы, что и unmodifiableList
, но в остальном это просто обычный ArrayList
, который позволяет добавлять и удалять элементы.