나는 Collections.sort를 사용하는 것을 알고 있지만 글자가 들어있는 문자열 만 정렬합니다. ArrayList를 알파벳 순으로뿐만 아니라 숫자 순으로 정렬하려면 어떻게합니까?
문자열이 이미 분류되고있는 번호 (AN String로서 비록) 볼 경우 :
import java.util.*;
class Sort {
public static void main(String [] args ) {
List list = Arrays.asList("Kings","7", "Abcd", "3.1416");
Collections.sort(list);
System.out.println(list);
}
}
인쇄
$ java Sort
[3.1416, 7, Abcd, Kings]
당신이 무엇을 필요가 있습니까? 당신이 숫자와 "문자"모두가 카드의 데크를 정렬하는 것입니다 필요 (추측) 가정
편집
(J는 Q는, K, A) 사용자 정의를 사용하려고 할 수 있습니다 비교기. 즉 당신은 내가 생각해야 할 것입니다 경우
다음은 "왕"
import java.util.*;
class Sort {
public static void main(String [] args ) {
List<String> list = Arrays.asList("Kings","7", "Queen", "3", "10", "A", "2", "8", "Joker");
Collections.sort(list , new Comparator<String>(){
public int compare(String a, String b){
// if both are numbers
if(a.matches("\\d+") && b.matches("\\d+")) {
return new Integer(a) - new Integer(b);
}
// else, compare normally.
return a.compareTo(b);
}
});
System.out.println(list);
}
}
$ java Sort
[2, 3, 7, 8, 10, A, Joker, Kings, Queen]
전에 고려 "숫자로"숫자 문자열로 나머지를 필요 하나, 그래서 "10", "2"다음에 오는 있지만, 이것은 당신이 나머지를 파악하는 데 도움이 될 것입니다. 아마도 스페이드와 하트를 어떻게 분류 할 것인가가 그 다음 일 것입니다.
당신이 클래스를 생성하고 Comparable 인터페이스를 구현할 수 Roman하여 답을 다음과 같습니다
class Card implements Comparable<Card> {
public int compareTo(Card other) {
// add custom logic to compare one card with other
}
}
"Collections.sort를 사용하는 것을 알고 있지만 글자가 포함 된 문자열 만 정렬합니다."어? – leonbloy
당신이하려는 것을 모를 경우, 콜렉션을 정렬하면 모든 것을 알파벳 순으로 정렬합니다 ("7"포함). 숫자는 A 앞에 놓여 지므로 맨 위에 올 것입니다. "s"아래에 7을 저장하려면 표시 문자열 "7"과 코드/텍스트 표현 "7"이있는 일반 모음 사전 클래스와 같은 사전을 만들어야합니다. 그런 식으로. – Cobusve