这个排序的不会排了,是用抽象类与接口的知识嘛,怎么排列呀,谢谢啦
第一种方法,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 +
'}';
}
}
实现 Comparable接口 重写compareTo
import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
User user1 = new User("1", "测试1", 10);
User user2 = new User("4", "测试4", 9);
User user3 = new User("3", "测试3", 11);
User user4 = new User("2", "测试2", 9);
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
List<User> sortedList = userList.stream()
.sorted(Comparator.comparing(User::getAge).thenComparing(User::getName))
.collect(Collectors.toList());
System.out.println(sortedList);
}
}
@Data
class User {
private String id;
private String name;
private Integer age;
public User(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
}