Java8提供了comparator比较器新特性: 支持集合中的信息进行自定义排序
定义一个类(当操作数据库时, 可以针对数据库映射到实体类进行排序):
package com.jiucheng.utils;
/**
* person
*
* @auther qiaoba
* @date 2020/9/23 0023 9:35
**/
public class person {
public String name;
public int age;
public int rank;
public int salary;
public person(String name, int age, int rank, int salary) {
this.name = name;
this.age = age;
this.rank = rank;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
", rank=" + rank +
", salary=" + salary +
'}';
}
}
实现: 年龄倒序 ,在年龄相同的基础上, 等级倒序
package com.jiucheng.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* ComparatorDemo
*
* @auther qiaoba
* @date 2020/9/23 0023 9:37
**/
public class ComparatorDemo{
public static void main(String[] args) {
ArrayList<person> list = new ArrayList<>();
list.add(new person("张三",112,112,66));
list.add(new person("李四",30,888,79));
list.add(new person("王五",30,4,33));
Collections.sort(list, new Comparator<person>() {
@Override
public int compare(person a1, person a2) {
int cr = 0;
int a = a2.age - a1.age;
if(a != 0)
cr = a;
else{
a = a2.rank - a1.rank;
if(a != 0)
cr = a;
else{
a = a2.salary - a1.salary;
if(a != 0)
cr = a;
}
}
return cr;
}
});
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
输出结果: