2010-03-23 3 views
0

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

ДОБАВЛЕНО:

Я хотел бы сделать это следующим образом:

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

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

ответ

1

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

String minPlayer = Collections.min(Arrays.asList(players)); 
minPlayer = Collections.min(Arrays.asList(minPlayer, extraPlayer)); 
1

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

+0

Вы знаете, если Array.sort() сгенерирует новый массив или он модифицирует входной массив? – Roman

+0

изменяет оригинал, но вы всегда можете передать его копию (или создать метод, который переносит Arrays.sort и делает копию и возвращает это). Примечание: Arrays.sort не Array.sort –

+0

Спасибо. Я понял, как разбираться. Но я не могу добавить значение в массив. Сначала я попробовал 'myArra [myArray.length] = newValue'. Он не работал (индекс за пределами диапазона). Теперь я пытаюсь использовать push. Но компилятор не может найти метод push ... – Roman

2

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

List<String> list = new ArrayList<String>(Arrays.asList(players)); 
list.add(userName); 
Смежные вопросы