\w
эквивалентен этому символьному классу:
[a-zA-Z0-9_]
Если вы хотите использовать только символы юникода в верхнем регистре, используйте этот класс символов:
'/[\p{Lu}\p{N}_]/u'
Это будет соответствовать любой из:
Arrays.asList
возвращает вам неизменный список, следовательно, UnsupportedOperationException
при добавлении. Вот javadoc, и вот что он говорит:
Возвращает список фиксированного размера , поддерживаемый указанным массивом. (Изменения в возвращаемом списке «сквозная запись» в массив.) Этот метод действует как мост между API на основе массива и на основе коллекции в сочетании с Collection.toArray (). Возвращенный список является сериализуемым и реализует RandomAccess.
blockquote>Для вашего случая вы действительно можете сделать это без какого-либо цикла со следующей строкой (т.е. с помощью конструктора):
List<String> temp = new ArrayList(origin);
Обновление
[ 1110] Если вы хотите отформатировать, вы можете повторить и применить формат, например:
List<String> temp = new ArrayList<>(); for(String element : origin) { String formattedElement = format(element); temp.add(formattedElement); }
Вот способ Java 8:
List<String> temp = origin.stream() .map(e -> format(e)) .collect(Collectors.toList());
Arrays.asList()
возвращает неизменный список. Вместо этого вы должны использовать некоторую реализацию изменяемого списка, такую как ArrayList
:
List<String> temp = new ArrayList();