繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM