[英]How to sort on the basis of both age and name of two different persons using Comparator?
[英]Comparator. How to sort by age, but if name is “A”, move it to the end of list?
我有下一个任务:
我有对象 MyObject:
MyObject {
private String name;
private int age;
}
使用 Comparator compare() 方法实现,我必须按年龄对 MyObject 的列表进行排序,但是如果 MyObject 的名称是“A”,则该元素应该移动到列表的末尾。 该列表不应包含 2 个名称为“A”的元素,因此我们忽略这种情况。
我已经写了下一个代码,但它不起作用
@Override
public int compare(MyObject myObject, MyObject t1) {
if (myObject.getName().equals("A")) {
return 1;
}else if (myObject.getAge() == t1.getAge()) {
return 0;
} else if (myObject.getAge() > t1.getAge()) {
return 1;
} else {
return -1;
}
}
实际上,我对它不起作用并不感到惊讶,因为我不明白在这种情况下使用哪种排序算法。
尝试类似:
@Override
public int compare(MyObject m1, MyObject m2) {
if (m1.getName().equals("A") && !m2.getName().equals("A")) {
return 1;
}else if (!m1.getName().equals("A") && m2.getName().equals("A")) {
return -1;
} else {
return Integer.compare(m1.getAge(), m2.getAge());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.