这个排序的不会排了,是用抽象类与接口的知识嘛,怎么排列呀,谢谢啦
3条回答 默认 最新
- qq_25376897 2022-06-10 12:05关注
第一种方法,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 + '}'; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line