我正在使用先前声明的比较器,在一个ArrayList上调用Collections.sort()方法。
出现这种情况的原因可能是,sort方法默认将集合元素转换为Comparable类型进行比较,而忽略了已经传入的Comparator。您可以检查一下是否正确地向sort方法传递了Comparator。
以下是堆栈跟踪信息,供参考:
ArrayList<Employee> list = new ArrayList<Employee>();
Comparator<Employee> comparator = new Comparator<Employee>() {
public int compare(Employee o1, Employee o2) {
return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
}
};
...
Collections.sort(list, comparator);
出现这种情况的原因可能是,sort方法默认将集合元素转换为Comparable类型进行比较,而忽略了已经传入的Comparator。您可以检查一下是否正确地向sort方法传递了Comparator。
以下是堆栈跟踪信息,供参考:
Exception in thread "Thread-3" java.lang.ClassCastException: processing.app.EmployeeManager$PrettyOkayEmpolyee cannot be cast to java.lang.Comparable
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at foobar.Main.doSomeSorting(Main.java:140)
...
at java.lang.Thread.run(Unknown Source)