如何解决比较器如何按年龄排序,但如果名称为“ A”,请将其移至列表末尾?
我有下一个任务:
我有对象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());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。