这是我的带有排序方法的测试类:
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;
}
}
只要我传入基本类型列表:字符串、整数等,它就可以正常工作。但是,当我尝试传入对象列表时,它不起作用。
这是我的类(class):
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 与我的类一起使用?
- 如何引发我传入的对象未实现比较方法的异常?
最佳答案
将比较器的实例发送到 sort()
:
Collections.sort(list, new AgeComparator());
关于java - 对未知类型的数组列表进行排序,如果对象不可比较则抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19480759/