这个排序的不会排了,是用抽象类与接口的知识嘛,怎么排列呀,谢谢啦

第一种方法,User实现Comparable接口,重写compareTo方法,排序则可以使用Collections.sort
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
//定义一组User数据
List<User> userList = new ArrayList<>();
User user = new User("1","c",12);
userList.add(user);
user = new User("2","b",20);
userList.add(user);
user = new User("3","a",12);
userList.add(user);
//排序
Collections.sort(userList);
//输出
System.out.println(userList);
}
}
class User implements Comparable{
public String id;
public String name;
public int age;
public User(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public int compareTo(Object o) {
User user = (User)o;
if(this.age == user.age){
//年龄相同,则按姓名排序
return this.name.compareTo(user.name);
}
//年龄不相同,升序排列
return this.age - user.age;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
第二种,User可以不实现Comparable接口,改成在Collections.sort里面实现Comparator接口的compare方法
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
//定义一组User数据
List<User> userList = new ArrayList<>();
User user = new User("1", "c", 12);
userList.add(user);
user = new User("2", "b", 20);
userList.add(user);
user = new User("3", "a", 12);
userList.add(user);
//排序
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if (o1.age == o2.age) {
//年龄相同,则按姓名排序
return o1.name.compareTo(o2.name);
}
//年龄不相同,升序排列
return o1.age - o2.age;
}
});
//输出
System.out.println(userList);
}
}
class User {
public String id;
public String name;
public int age;
public User(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}