比较器。如何按年龄排序,但如果姓名为 "A",则将其移至列表末尾?
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());
}
}
我有下一个任务:
我有对象 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());
}
}