这几天做题刚好遇到对List集合排序的题,发现一种好用的方法,做一个笔记。
我是基于spring,对于刚学java的小伙伴可以直接在main方法中去完成。
第一步
创建一个实体类对象User
package bean;
public class User {
private String username;
private Integer age;
public User(String username, Integer age) {
this.username = username;
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
第二步
编写测试文件
package test;
import bean.User;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortDemo {
@Test
void doSort(){
List<User> list = new ArrayList<User>();
list.add(new User("张三",5));
list.add(new User("李四",30));
list.add(new User("王五",19));
list.add(new User("微风",30));
/**
* 对年龄进行降序排序
*/
Collections.sort(list, new Comparator<User>() {
public int compare(User o1, User o2) {
int diff = o1.getAge() - o2.getAge();
if(diff < 0) return 1;//前面的数小于后面的数
if(diff > 0) return -1;//前面的数大于后面的数
return 0;//相等的情况
}
});
/**
* 对年龄进行升序排序
*/
/*
Collections.sort(list, new Comparator<User>() {
public int compare(User o1, User o2) {
int diff = o1.getAge() - o2.getAge();
if(diff > 0) return 1;
else if(diff < 0) return -1;
return 0;//相等返回0
}
});
*/
for (User user:list){
System.out.println(user.getAge());
}
}
}
降序排序运行结果: