2010-03-23 3 views
0

문자열 배열에 하나의 추가 문자열이 있습니다. 이 문자열과 배열 값을 사용하여 문자열 집합을 가져 오려고합니다. 그런 다음 문자열 집합을 사전 순으로 정렬하고 목록에서 첫 번째 문자열을 추출합니다. 자바에서 가장 쉬운 방법은 무엇입니까?배열의 값을 사전 순으로 가져 오는 방법은 무엇입니까?

ADDED : 내가 원하는

가 이런 식으로 할 수는 :

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 '를 시도했습니다. 작동하지 않았습니다 (범위를 벗어난 색인). 이제는 밀어 넣기를 사용하려고합니다. 그러나 컴파일러는 메서드 푸시를 찾을 수 없습니다. – Roman

2

Arrays.asList은 변경 불가능한 List으로 배열을 감싸고, 그래서 당신이 그것에 추가하려고하면 그것은 UnsupportedOperationException가 발생합니다. 당신이 그것을 할 수있는 새로운 ArrayList을 만들고 거기에 요소를 추가하면, 나중에 그것을 자유롭게 수정할 수 있습니다.

List<String> list = new ArrayList<String>(Arrays.asList(players)); 
list.add(userName);