比较器。如何按年龄排序,但如果姓名为 "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());
   }
}