创建一个实体类
public class User implements Comparable<User> {
private Integer ID;
private String name;
private int age;
private String birthday;
public User(Integer ID, String name, int age, String birthday) {
this.ID = ID;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public Integer getID() {
return ID;
}
public void setID(Integer ID) {
this.ID = ID;
}
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 String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" +
"ID=" + ID +
", name='" + name + '\'' +
", age=" + age +
", birthday='" + birthday + '\'' +
'}';
}
//排序方法sortByComparable,需要实现Comparable接口,重写compareTo方法
@Override
public int compareTo(User o) {
if(this.age > o.getAge()){
return 1;
}else if(this.age < o.getAge()){
return -1;
}else{
return 0;
}
}
}
List的排序方法
- 使用Comparator排序方法
- 使用JAVA8中stream进行排序
- 使用Comparable方法,在使用该方法时,需要在实体类中实现Comparable接口,重写compareTo方法
package ListWork;
import com.mysql.cj.protocol.Protocol;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class OrderList {
/**
* 利用Comparator排序
* @param userList
* @return
*/
public void sortByComparator(List<User> userList){
//写法一:匿名内部类
// Collections.sort(userList, new Comparator<User>() {
// @Override
// public int compare(User o1, User o2) {
// return o1.getAge()- o2.getAge();
// }
// });
//写法二:lambda表达式
// Collections.sort(userList,(o1, o2) -> o1.getAge()- o2.getAge());
//写法三:
Collections.sort(userList, Comparator.comparingInt(User::getAge));
}
/**
* 使用JAVA8中stream进行排序
* @param userList
* @return
*/
public List<User> sortByStream(List<User> userList){
List<User> newUserList = new ArrayList<>();
newUserList=userList.stream()
.sorted(Comparator.comparing(User::getAge))
.collect(Collectors.toList());
return newUserList;
}
/**
* 使用Comparable方法
* @param userList
*/
public void sortByComparable(List<User> userList){
Collections.sort(userList);
}
}
测试类
public class TestOrderList {
public static List<User> userList;
static {
User zhangSan = new User(1,"张三",12,"2001-01-02");
User liSi = new User(2,"李四",11,"2001-01-02");
User wangWu = new User(3,"王五",13,"2003-01-02");
User zhaoLiu = new User(4,"赵六",10,"2003-01-02");
userList = Arrays.asList(zhangSan,liSi,wangWu,zhaoLiu);
}
@Test
public void testSortByComparator(){
OrderList orderList = new OrderList();
System.out.println("按年龄排序前"+userList);
orderList.sortByComparator(userList);
System.out.println("按年龄排序后"+userList);
}
@Test
public void testSortByStream(){
OrderList orderList = new OrderList();
List<User> resUserList = new ArrayList<>();
System.out.println("按年龄排序前"+userList);
resUserList = orderList.sortByStream(userList);
System.out.println("按年龄排序后"+resUserList);
}
@Test
public void testSortByComparable(){
OrderList orderList = new OrderList();
System.out.println("按年龄排序前"+userList);
orderList.sortByComparable(userList);
System.out.println("按年龄排序后"+userList);
}
}