排序
List<Person> list = new ArrayList<>();
list.add(new Person(true, "2020-03-10 00:00:00"));
list.add(new Person(false, "2020-05-08 00:00:00"));
list.add(new Person(false, "2020-03-04 00:00:00"));
list.add(new Person(true, "2020-03-13 00:00:00"));
System.out.println("排序前:" + list);
// 1.匿名函数方式
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person arg0, Person arg1) {
return -arg0.getDate().compareTo(arg1.getDate());
}
});
// 2.函数式接口方式
Collections.sort(list, Comparator.comparing(Person::isName));
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person arg0, Person arg1) {
boolean onLine1 = arg0.isName();
boolean onLine2 = arg1.isName();
//两个值进行位运算,值不同为1,为true,参与运算
//值相同为0,为false,不参与运算
if(onLine1 ^ onLine2){
return onLine1 ? -1 : 1;
}else{
return 0;
}
}
}.reversed());
System.out.println("排序后:" + list);
实体类
@Data
class Person{
/*String name ;
String date ;
public Person(String name, String date) {
super();
this.name = name;
this.date = date;
}
public Person() {
super();
}*/
boolean name ;
String date ;
public Person(boolean name, String date) {
super();
this.name = name;
this.date = date;
}
public Person() {
super();
}
boolean类型数据也可使用 lambda表达式的形式
// 2.函数式接口方式
Collections.sort(list, Comparator.comparing(Person::isName));