实体
public class Users {
private String id;
private Integer age;
private Integer sex;
// 身价
private Integer worth;
}
测试
package com.example.demo.utils;
import com.example.demo.entity.Users;
import com.google.common.collect.Ordering;
import com.google.common.primitives.Ints;
import java.util.*;
public class MainClass4 {
public static void main(String[] args) {
List<Users> list = initUserList();
// 根据财富和年龄
Ordering<Users> orderWorker = Ordering.from(new SortWorth());
Collections.sort(list,orderWorker);
System.out.println( " 单参数排序 worth ");
printList(list);
System.out.println(" 多参数排序 ");
Ordering<Users> order = Ordering.from(new SortWorth()).compound(new SortAge());
Collections.sort(list,order);
printList(list);
}
private static void printList(List<Users> list) {
list.forEach((value) -> {
System.out.println(value.toString());
});
}
private static List<Users> initUserList() {
List<Users> userList = new ArrayList<>();
Users u = null;
for (int i = 0; i < 10; i++) {
u = new Users();
u.setId(i+"");
u.setAge(new Random().nextInt(100));
u.setSex(i%2==0 ? 1 :0);
u.setWorth(new Random().nextInt(20)+1);
userList.add(u);
}
for (Users us : userList) {
System.out.println(us.toString());
}
return userList;
}
}
/**
* 按照财富排序 大到小 比较类
*/
class SortWorth implements Comparator<Users> {
@Override
public int compare(Users o1, Users o2) {
// return Ints.compare(o1.getWorth(),o2.getWorth()); 小到大
return Ints.compare(o2.getWorth(),o1.getWorth()); //大到小
}
}
/**
* 按照 age 排序 小到大
*/
class SortAge implements Comparator<Users> {
@Override
public int compare(Users o1, Users o2) {
return Ints.compare(o1.getAge(),o2.getAge());// 小到大
// return Ints.compare(o2.getAge(),o1.getAge());
}
}
依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>