2016-04-11 36 views
0

だから、クラスアルゴリズムのメソッドでソートされた人物の配列を作成するこのプログラムを作成します。 compareToという比較メソッドを定義するSortableインターフェイスを作成します。compareToメソッドは、2つのオブジェクトを比較してどちらが最初に来るのかを調べる必要があります。 Personクラスはpersonを表し、Sortableを実装し、AlgorithmsクラスはSortableオブジェクト(人物)からなる配列を取り、これらをソートするsortというメソッドを持っています。私は立ち往生していて、私の教科書はここで私を助けてくれていません。並べ替えメソッドを持つ人物の並べ替え

public interface Sortable <T> { 
int compareTo(T ob); 
} 

public class Algorithms implements Sortable <Person>{ 

    public int compare(Person p1, Person p2){ 
     return p1.lastName().compareTo(p2.lastName()); 
    } 
} 

public class Person implements Sortable<Person> 
{ 
String firstName; 
String lastName; 
String dob; 

public Person (String lastName, String firstName, String dob){ 
this.lastName=lastName; 
this.firstName=firstName; 
this.dob=dob; 
} 

public String lastName(){ 
return lastName; 
} 

public String firstName(){ 
return firstName; 
} 
public String dob(){ 
return dob; 
} 

@Override 
public int compareTo(Person o){ 
    Person p = (Person)o; 
    int last = lastName.compareTo(o.lastName); 
     return last; 
} 

public String toString(){ 
return "Namn "+ lastName +" "+ firstName +" Personnummer: "+dob; 
} 
} 

public class Personer { 
public static void main(String[]args){ 
    Person p1 = new Person ("Ek","Ida","530525-0055") ; 
    Person p2 = new Person ("Björk","Sten","650203-0250"); 
    Person p3 = new Person ("Al", "Bengt","881212-4455"); 

    List <Person> list = new ArrayList<>(); 
    list.add (p1); 
    list.add (p2); 
    list.add (p3); 

    Arrays.sort(list, new Algorithms()); 

    System.out.println("lista: "+list); 

} 
} 

質問本当に私はこのコードを作るために何をすべきかが必要ですさは最後にアルファベット順に人々の数の名前と生年月日out印刷することである、私はそれがやりたいですベースOM姓

+0

を使用し、あなたはデバッグしようとしましたか? –

+0

私はあなたが 'Comparable'を実装するべきだと思います。 –

答えて

1
あなたは人クラスに Comparableを実施しなければならない

public class Person implements Comparable<Person> { 
    String firstName; 
    String lastName; 
    String dob; 

    public Person(String lastName, String firstName, String dob) { 
     this.lastName = lastName; 
     this.firstName = firstName; 
     this.dob = dob; 
    } 

    public String lastName() { 
     return lastName; 
    } 

    public String firstName() { 
     return firstName; 
    } 

    public String dob() { 
     return dob; 
    } 

    @Override 
    public int compareTo(Person o) { 
     int last = lastName.compareTo(o.lastName); 
     return last; 
    } 

    public String toString() { 
     return "Namn " + lastName + " " + firstName + " Personnummer: " + dob; 
    } 
} 

そしてリスト

public class Personer { 
    public static void main(String[] args) { 
     Person p1 = new Person("Ek", "Ida", "530525-0055"); 
     Person p2 = new Person("Björk", "Sten", "650203-0250"); 
     Person p3 = new Person("Al", "Bengt", "881212-4455"); 

     List<Person> list = new ArrayList<>(); 
     list.add(p1); 
     list.add(p2); 
     list.add(p3); 

     Collections.sort(list); 

     System.out.println("lista: " + list); 

    } 
} 
012にソートする Collections#sortメソッドを使用します

これらの2つのクラスは必須です。

0

Collectionsで利用可能なsortメソッドを使用できます。あなたのPersonクラスのcompareTolastNameと比較するだけに制限したくない場合は、匿名の内部クラスを使用してComparatorを作成し、lastNameを比較します。

Collections.sort(list, new Comparator<Person>() { 

     @Override 
     public int compare(Person o1, Person o2) { 
      return o1.lastName().compareTo(o2.lastName()); 
     } 
    }); 
0

修正アルゴリズムクラスと(Personerクラスで)ソートするためのコンパレータインタフェース

import java.util.Comparator; 
    public class Algorithms implements Comparator <Person>{ 

     public int compare(Person p1, Person p2){ 
      return p1.lastName().compareTo(p2.lastName()); 
     } 
    } 

を実装

List <Person> list = new ArrayList<>(); 
list.add (p1); 
list.add (p2); 
list.add (p3); 
list.sort(new Algorithms());