2013-04-24 2 views
0

나는 마지막으로 공부하고있다. 나는 중간 고사에서 질문을보고 잘못되었다고 솔직히 그렇게하는 법을 알지 못했다. 당신이 사람 객체의 ArrayList에있는 경우, ArrayList를, 당신은 그것을 정렬 방법을 컬렉션을 사용하여 정렬 할 수 있도록ArrayList에 대한 다시 쓰기 클래스 - Java

는 Person 클래스를 다시 작성

다음과 같이 질문입니다. 정렬 방법은 먼저 나이를 으로 줄인 다음 알파벳 순으로 정렬해야합니다 (같은 연령대의 사용자의 경우).

질문에 제공된 동일한 코드 (Person 클래스)는 다음과 같습니다.

public class Person { 
    public String name; 
    public int age; 
} 

이것은 중간 고질적 인 질문이므로 코드를 직접 작성해야했습니다. 나는이 질문에 대답하는 효율적이고 적절한 방법이 무엇인지 궁금합니다. 모든 답변이나 의견을 크게 주시면 감사하겠습니다. 감사합니다. .

+0

방법입니다 중복 롤 ... 당신은 정의의 ArrayList를 정렬하려는 두 개의 필드 choloboy7 @ – choloboy7

+1

전혀 그렇지 dupliucate.It 필요 재산에 의한 물건 :) – PSR

+0

와 –

답변

1

Person 클래스가 Comparable 인터페이스를 구현하고 CompareTo 메소드 구현을 제공하도록하십시오. 내가 @Kevin Bowersox을주의하고 싶습니다

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 

public class Person implements Comparable<Person> { 
    public String name; 
    public int age; 

    @Override 
    public int compareTo(Person person) { 
     return new Integer(this.age).compareTo(person.age); 
    } 


    public static void main(String[] args) { 
     Person person = new Person(); 
     person.name = "Kevin"; 
     person.age = 28; 
     Person person2 = new Person(); 
     person2.name="Bob"; 
     person2.age = 40; 
     Person person3 = new Person(); 
     person3.name="Joe"; 
     person3.age = 90; 

     List<Person> people = new ArrayList<Person>(); 
     people.add(person2); 
     people.add(person3); 
     people.add(person); 

     Collections.sort((List<Person>)people); 

     for(Person p:people){ 
      System.out.println(p.name); 
     } 
    } 

} 
2

은 나이와 오름차순으로 그의 대답의 종류의 계정에 이름을 두 번째 종류의 촬영하지 않는 대답. 그 두 가지 문제를 해결하기 위해이 함께 compareTo와 교체

@Override 
public int compareTo(Person person) 
{ 
    int ageSort = new Integer(person.age).compareTo(this.age); 

    // If the ages aren't the same 
    if(ageSort != 0) 
    { 
     return ageSort; 
    } 

    // otherwise sort on name alphabetically 
    return name.compareTo(person.name); 
} 
관련 문제