Java Comparator-对象上的两级比较

Java Comparator-对象上的两级比较,java,Java,我正在使用java Comparator,它需要根据以下条件进行排序- Object1-名称子名称 Object2-名称子名称 根据以下条件比较Object1和Object2- 条件1:如果名称!=子名称-排序时将其向上推 条件2:如果名称==子名称-排序时向下推 有谁能帮忙,如何实现这一点吗?比较器是一个接口。 因此,在您的情况下,Object1和Object2应该是来自同一对象的实例,假设为NameObject。 您可以在NameObject上添加一个Comparator接口。并创建一个新的

我正在使用java Comparator,它需要根据以下条件进行排序-

Object1-名称子名称

Object2-名称子名称

根据以下条件比较Object1和Object2-

条件1:如果名称!=子名称-排序时将其向上推

条件2:如果名称==子名称-排序时向下推


有谁能帮忙,如何实现这一点吗?

比较器是一个接口。 因此,在您的情况下,Object1和Object2应该是来自同一对象的实例,假设为NameObject。 您可以在NameObject上添加一个Comparator接口。并创建一个新的比较方法。 之后,您可以使用sort

public class NameObject implements Comparator{
 private String name;
 private String subName;
 //getter and setter
 compare(NameObject o1, NameObject o2){
  //do some thing you want.
 }
}

如果您想独立地实现比较器,这也没关系。

您可能只需要使用精确的伪代码来实现您的目标……您应该阅读以下文章:比较器不是用于此目的的。。您应该在此处使用Comparable.ifsc1.getName.equalsIgnoreCasesc1.getSubName&!sc2.getName.equalsIgnoreCasesc2.getSubName{return 1;}ifsc2.getName.equalsIgnoreCasesc2.getSubName&!然后我有另一个条件检查sc1上的另一个字段&sc2 int diff=sc2.getTotalVal.compareTosc1.getTotalVal;如果difference==0{return sc2.userId.compareTosc1.userId;}否则{return difference;}每次运行此代码时,我都会得到不同的排序结果,这里有什么问题?compareTo是可比较接口。我认为您对如何使用Comparable或Comparator对列表进行排序有些困惑。检查以下链接: