我想按两个布尔值对日期和顺序进行排序,但结果是错误的。首先按日期排序,如果 boolean1 和 boolean 2 为 false 优先级高,next:boolean 2 为 true
List<Project> list = new ArrayList<>();
list.add(new Project(false, false, new Date("1/1/2019"), "Jet" , "1"));
list.add(new Project(true, false, new Date("1/1/2019"), "Sang", "2"));
list.add(new Project(false, false, new Date("1/1/2019"), "Dung", "1"));
list.add(new Project(false, true, new Date("1/1/2020"), "Long", "1"));
list.add(new Project(true, false, new Date("1/1/2020"), "Nguyen", "3"));
list.add(new Project(true, false, new Date("1/1/2020"), "Khang", "2"));
Collections.sort(list, new Comparator<Project>() {
@Override
public int compare(Project o1, Project o2) {
// TODO Auto-generated method stub
int result = o1.date.compareTo(o2.date);
if (result != 0) return result;
boolean o1boolean1 = o1.boolean1;
boolean o1boolean2 = o1.boolean2;
boolean o2boolean1 = o2.boolean1;
boolean o2boolean2 = o2.boolean2;
result = Boolean.compare((!o1boolean1 && !o1boolean2), (!o2boolean1 && !o2boolean2));
if (result != 0) {
return result;
}
return Boolean.compare(o1boolean2, o2boolean2);
}
});
for(Project pp : list) {
System.out.println(pp.name);
}
我的结果:Jet,Dung,Sang,Long,Nguyen,Khang 请帮帮我。