Как получить значения массива в алфавитном порядке? - PullRequest
0 голосов
/ 23 марта 2010

У меня есть массив строк плюс одна дополнительная строка. Я хочу использовать эту строку и значения массива, чтобы получить набор строки. Затем я хочу упорядочить набор строк в алфавитном порядке и извлечь строку, которая является первой в списке. Какой самый простой способ сделать это на Java?

ДОБАВЛЕНО:

Я хотел сделать это так:

List<String> playersList = Arrays.asList(players);
playersList.add(userName); // <---------- HERE IS A PROBLEM
Collections.sort(playersList);

Я не получаю никаких ошибок во время компиляции. Но во время выполнения я получаю «UnsopportedOperationException». И это происходит во второй строке.

Ответы [ 3 ]

2 голосов
/ 24 марта 2010

Arrays.asList оборачивает массив неизменяемым List, поэтому при попытке добавить к нему выдается UnsupportedOperationException. Что вы могли бы сделать, это создать новый ArrayList и добавить к нему свои элементы, тогда вы можете изменить его потом.

List<String> list = new ArrayList<String>(Arrays.asList(players));
list.add(userName);
1 голос
/ 24 марта 2010

Если вы просто хотите получить минимум массива String с дополнительным внешним элементом, то вам не нужно сначала сортировать и извлекать (что будет O(N log N)). Вы можете сделать это в O(N).

String minPlayer = Collections.min(Arrays.asList(players));
minPlayer = Collections.min(Arrays.asList(minPlayer, extraPlayer));  
1 голос
/ 23 марта 2010

Либо добавьте значение в массив и отсортируйте его с помощью Arrays.sort, либо создайте список элементов и отсортируйте их с помощью Collections.sort. Естественный порядок строк будет в алфавитном порядке.

...