2012-02-04 2 views
1

Ive는 내 게임에 최고 기록 시스템을 가지고 있습니다. 그리고 난 필자 숫자 자바에서 최고 기록 수를 정렬

public static int[] sort(int[] a){ 
    Arrays.sort(a); 
    return a; 
} 

를 정렬 할 수있는 방법이있어, 순서를 acending의 숫자를 정렬 할 수 싶지만 방법은 내가 그렇게 점수가 설정 플레이어의 이름으로 유지해야합니까? 예를 나를 위해 : 10 당신은 50

당신은 1 번해야하고 분류 할 때 나 2. 내가 어떻게이 문자열이 INT로 유지하도록 만들 이하 여야한다? 감사합니다

답변

4

가장 쉬운 방법은 그 사람의 이름과 점수를 담는 수업을 만드는 것입니다. Comparable 인터페이스를 구현하게하려면 compareTo(...) 메서드에서 현재 개체의 점수 인 this을 메서드에 전달되는 개체와 비교 한 다음 수행중인 것처럼이 클래스의 개체 배열을 정렬합니다.

class MyFoo implements Comparable<MyFoo> { 
    private String name; 
    private int score; 

    public MyFoo(String name, int score) { 
    // ... etc... 
    } 

    // getter methods here 

    public int compareTo(MyFoo other) { 
    return score - other.getScore(); 
    } 

    //.... etc... 
} 
+0

괜찮 았기 때문에 비슷한 객체의 arraylist가 Arrays.sort를 사용하여 올바른 순서로 정렬됩니까? 도움을 주셔서 감사합니다 : D –

+0

@ 잭 Pacrick : 그것을 시도하고 볼 수 있습니다. :) –

+0

좋아, 반환 할 비교할 빠른 방법을 주셔서 감사합니다, 나는 수동으로, 각 경우에 대한 경우 : –

2

하여 플레이어의 이름과 점수, 적절한 게터 (getName()getScore()) 모두를 포함하는 클래스 Player을 작성, 당신은

Player[] players = ... 
Arrays.sort(players, new Comparator<Player> { 
    public int compare(Player p1, Player p2) { 
     return Integer.valueOf(p1.getScore()).compareTo(p2.getScore()); 
    }  
} 
와 플레이어의 배열을 정렬 할 수 있습니다
+0

아, 네, '비교 (...)'방법이 내 'compareTo (...)'보다 낫다. +1표 –

관련 문제