我正在四处寻找一种方法来根据多个字段中的一个对对象列表进行排序(我最终只是自己问这个问题)但在我的研究中,我遇到了这个答案:
https://stackoverflow.com/a/1421537/1549672
我是 java 的新手,这可能就是原因,但我不太了解最后一种方法:
public static Comparator<Person> getComparator(final PersonComparator... multipleOptions) {
return new Comparator<Person>() {
public int compare(Person o1, Person o2) {
for (PersonComparator option : multipleOptions) {
int result = option.compare(o1, o2);
if (result != 0) {
return result;
}
}
return 0;
}
};
}
有人可以解释一下它是如何工作的……以及它到底有什么作用吗? 谢谢!
最佳答案
它会找到第一个不会返回“equals”的比较器并返回它的值,否则返回“equals”。
实际上,它会创建一个新的 Comparator 来执行此操作,方法是创建一个基于 Comparator 接口(interface)的匿名类。
public static Comparator<Person> getComparator(
final PersonComparator... multipleOptions)
{
return new Comparator<Person>() { //create anonymous class
public int compare(Person o1, Person o2) { //which implements the only method
//in Comparator
for (PersonComparator option : multipleOptions) { //loop through given
//comparators
int result = option.compare(o1, o2);
if (result != 0) { //return value of the first
return result; //which says "non-equal"
}
}
return 0;//all said "equals" so we say "equals"
}
};
}
关于java - 使用枚举对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11786035/