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