Java List集合排序实现方法解析
2020-05-07 04:05
169 查看
这篇文章主要介绍了Java List集合排序实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.使用 Collections 工具类中的 sort() 方法
参数不同:
void sort(List list) 在自定义类User里面实现Comparable<User>接口,并重写抽象方法compareTo(Student o);
void sort(List list, Comparator c) 第二个参数为了省事,可以直接使用匿名内部类
public class User implements Comparable<User>{ private int score; private int age; public User(int score, int age){ super(); this.score = score; this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(User o) { int i = this.getAge() - o.getAge();//先按照年龄排序 if(i == 0){ return this.score - o.getScore();//如果年龄相等了再用分数进行排序 } return i; } } public static void main(String[] args) { List<User> users = new ArrayList<User>(); users.add(new User(78, 26)); users.add(new User(67, 23)); users.add(new User(34, 56)); users.add(new User(55, 23)); Collections.sort(users); for(User user : users){ System.out.println(user.getScore() + "," + user.getAge()); } }
public class Students { private int age; private int score; public Students(int age, int score){ super(); this.age = age; this.score = score; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } public static void main(String[] args) { List<Students> students = new ArrayList<Students>(); students.add(new Students(23, 100)); students.add(new Students(27, 98)); students.add(new Students(29, 99)); students.add(new Students(29, 98)); students.add(new Students(22, 89)); Collections.sort(students, new Comparator<Students>() { @Override public int compare(Students o1, Students o2) { int i = o1.getScore() - o2.getScore(); if(i == 0){ return o1.getAge() - o2.getAge(); } return i; } }); for(Students stu : students){ System.out.println("score:" + stu.getScore() + ":age" + stu.getAge()); } }
2.直接使用list.sort()方法,传入实现Comparator接口的实现类的实例,为了省事直接传入匿名内部类
public class Students { private int age; private int score; public Students(int age, int score){ this.age = age; this.score = score; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } public static void main(String[] args) { List<Students> students = new ArrayList<Students>(); students.add(new Students(23, 100)); students.add(new Students(27, 98)); students.add(new Students(29, 99)); students.add(new Students(29, 98)); students.add(new Students(22, 89)); students.sort(new Comparator<Students>() { @Override public int compare(Students o1, Students o2) { int i = o1.getScore() - o2.getScore(); if (i == 0) { return o1.getAge() - o2.getAge(); } return i; } }); for (Students stu : students) { System.out.println("score:" + stu.getScore() + ":age" + stu.getAge()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- TreeSet() 类逆向排序(实现compare()方法以便按正常顺序的逆向进行操作)。
- JAVA实现表格排序的方法
- 数组排序方法及C实现的总结
- 解析Cookie欺骗实现过程及具体应变方法
- Java实现几种常见排序方法
- XMPP客户端关于用户组排序的一个可能的实现方法
- 在STL中,map按值来排序的实现方法_永不言弃是生命的基调!_百度空间
- 利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主子表记录的方法
- mysql中文排序注意事项与实现方法
- Java实现几种常见排序方法
- 让Apache支持shtml实现include文件解析的配置方法
- 让MySQL支持中文排序的实现方法
- 往TreeSet中存入自定义对象,并且使用自定义排序方法(实现comparetor)
- 黑马程序员——TreeSet实现按字符串长度排序,复写Comparator()接口的compare()方法
- js实现图片放大缩小功能后进行复杂排序的方法
- 利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主表记录的方法
- ValueTpye boxing及虚方法重写及CallVirt指令实现解析
- 详细解析用Squid实现反向代理的方法
- 含行、列合计的统计。按列合计排序实现的sql方法