我有一份计划在多个日期交付的汽车清单,需要根据以下几点进行分类: 如果isready>0,则应首先显示在表中。然后其他值在特定日期低于它。 如果“ isReady>0和”为“对象” gear!=null,则在该特定日期的表中首先显示该对象。其次是Object的其他值gear==null。 如果是isReady>0,Object gear!=null和Object tyre!=null,则该值首先在该特定日期的表中显示。紧随其后的是Object gear==null和的其他值tyre==null。 以下是class代码:
public class Car { private int isReady; private Tyre tyre; private Gear gear; private Date deliveryDate; }
public class Gear { private int id; private String type; }
public class Tyre { private int id; private String grip; }
public class CarComparator implements Comparator { @Override public int compare(Car entry1, Car entry2) { int value = 0;
if (entry1.getIsReady() > entry2.getIsReady()) {
value = -1;
} else if (entry1.getIsReady() < entry2.getIsReady()) {
value = 1;
} else if (entry1.getIsReady() == entry2.getIsReady()) {
value = 0;
}
return value;
}
} 我已经开发了一个比较器,它在第一个条件下可以很好地工作,其中isready>0。你能帮我解决上面提到的其他条件吗?
检查此比较器,以便可以对多个属性进行排序
public class CarComparator implements Comparator {
@Override
public int compare(Car entry1, Car entry2) {
int value;
if (entry1.getDeliveryDate().before(entry2.getDeliveryDate())){
value = -1;
}else if (entry1.getDeliveryDate().equals(entry2.getDeliveryDate())){
value = 0;
}else{
value =1;
}
//For same day
if (value==0){
if (entry1.getIsReady() > entry2.getIsReady()) {
value = -1;
} else if (entry1.getIsReady() < entry2.getIsReady()) {
value = 1;
} else if (entry1.getIsReady() == entry2.getIsReady()) {
value = 0;
}
}
//if same isReady
if (value==0){
if (entry1.getGear()!=null && entry2.getGear()==null) {
value = -1;
} else if (entry1.getGear()==null && entry2.getGear()==null) {
value = 0;
} else{
value = 1;
}
}
//if still equals
if (value==0){
if (entry1.getTyre()!=null && entry2.getTyre()==null) {
value = -1;
} else if (entry1.getTyre()==null && entry2.getTyre()==null) {
value = 0;
} else{
value = 1;
}
}
return value;
}
} 我不确定这是否是你要尝试的方法。上面的比较器所做的是:首先对日期进行排序,如果发现相等的日期(值= 0),则比较isReady,然后比较getGear()和最后的getTyre()。
这样,可以在比较器中添加所需数量的属性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。