2014-03-27 2 views
-1

나는개체 배열을 정렬하는 방법?

Player p[] = new Player[t]; 

같은 객체 배열을 그리고 모든 객체는 정수 변수 이름 변수를 가지고있다.

public class Player { 
    public String player_name; 
    public int number; 
} 

사용자로부터 입력을받은 후 어떻게 번호 변수에 따라이 개체 배열을 정렬 할 수 있습니까?

+1

Ref. http : // stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects-by-property? rq = 1 (목록의 경우 [Arrays.sort] (http://docs.oracle.com/javase/7)를 참조하십시오. /docs/api/java/util/Arrays.html#sort(T[],%20java.util.Comparator))) – user2864740

+1

'Arrays.sort'와'Comparator'에 대해 읽으십시오 –

+1

눈을 오른쪽으로 "관련"섹션을 클릭하면 수십 개의 중복 된 질문을 찾을 수 있습니다. –

답변

0

: 다음

public int compareTo(Player player) { 
    return this.number-player.number; 
} 

을 배열을 정렬 할 때마다 LL Arrays.sort(p);

+0

number의 큰 음수 값에는 작동하지 않을 수 있습니다. 'Integer.compare'사용 개선 – Puce

0

Comparator<Player>을 구현하는 클래스 (예 : PlayerComparator)를 만듭니다. 두 개의 Player이 걸리는 compare method을 만들어 인터페이스를 구현하십시오. 첫 번째 Player이 두 번째 Player보다 작거나 같거나 큰지 여부에 따라 음수, 0 또는 양수를 반환합니다.

그런 다음 PlayerComparator을 생성하여 (배열과 함께) Arrays.sort으로 전달할 수 있습니다.

(테스트되지 않은) 같은 자바 SE 8 시도 무언가로
1

:

Arrays.stream(p).sorted((p1, p2) -> Integer.compare(p1.number, p2.number)) .collect(Collectors.toList()) 

편집

는 새로운 배열을 생성하지 않는 한이,이 경우 더 효율적일 수 있습니다 두 번째 생각에/모음 :

Arrays.sort(p, (p1, p2) -> Integer.compare(p1.number, p2.number)); 
+0

+1에 대한 생각은 람다 :) – mdm

0

사용자 정의 클래스 Comparable 인터페이스를 구현 한 다음 정렬 자바 컬렉션을 사용할 수 있도록 요 UR 어레이 (Arrays.sort() 기능)

public class Player implements Comparable<Player> { 
    public String player_name; 
    public int number; 

    @Override 
    public int compareTo(Player object) { 
     return this.player_name.compareTo(object.player_name); 
    } 
} 

정렬

가장 쉬운 방법은 PlayerComparable<Player> 구현 확인한 Player 내부 compareTo(Player) 방법을 구현하는 것이다
Player p[] = new Player[t]; 
// do stuff 
Arrays.sort(p); 
0

이 같은 일을 당신은 숫자 변수에 게터이 필요 것 :

public class Player { 
    public String player_name; 
    public int number; 

    public int getNumber() { 
     return number; 
    } 
} 

그리고 자바 8로, 당신은 Comparing 팩토리 클래스를 사용하여 정렬 할 수 있습니다 :

Player[] p = new Player[t]; 
Arrays.sort(p, Comparator.comparingInt(Player::getNumber)); 

이됩니다

  • 없이 01을 비교함으로써, Comparator<Person> 만들기방법.
  • 여기서 보는 방법은 플레이어를 번호에 매핑하는 람다 p -> player.getNumber()의 줄임말 인 메서드 참조입니다.
관련 문제