sort メソッドを使用したテストクラスは次のとおりです。
public class Main {
public static void main(final String[] args) {
ArrayList<Person> people = new ArrayList<Person>();
Person person1 = new Person("Jonas", 36);
Person person2 = new Person("Petras", 16);
people.add(person1);
people.add(person2);
ArrayList<Integer> ints = new ArrayList<Integer>();
ints.add(6);
ints.add(5);
ints = Main.sortAscending(ints);
System.out.println(ints);
}
public static <T extends Comparable<? super T>> ArrayList<T> sortAscending(
final ArrayList<T> list) {
Collections.sort(list);
return list;
}
}
文字列、int などのプリミティブ型のリストを渡す限り、正常に動作します。ただし、オブジェクトのリストを渡そうとすると、動作しません。
これが私のクラスです:
public class Person {
final String name;
final int age;
public Person(final String name, final int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return String.format("{name=%s, age=%d}", name, age);
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(final Person person1, final Person person2) {
return person1.age < person2.age ? -1 : person1.age == person2.age ? 0 : 1;
}
}
- メソッド sortAscending をクラスで動作させるにはどうすればよいですか?
- 渡したオブジェクトに比較メソッドが実装されていない場合、例外をスローするにはどうすればよいですか?