https:/blog.csdn.net/veryisjava/article/details/51675036

  1. public static void main(String[] args) {
  2. List<Integer> nums = new ArrayList<Integer>();
  3. nums.add(3);
  4. nums.add(5);
  5. nums.add(1);
  6. nums.add(0);
  7. System.out.println(nums);
  8. Collections.sort(nums);
  9. System.out.println(nums);
  10. }

test1

输出结果:
[3, 5, 1, 0]
[0, 1, 3, 5]

  1. package core.java.collection.collections;
  2.  
  3. public class User implements Comparable<User>{
  4.  
  5. private int score;
  6.  
  7. private int age;
  8.  
  9. public User(int score, int age){
  10. super();
  11. this.score = score;
  12. this.age = age;
  13. }
  14.  
  15. public int getScore() {
  16. return score;
  17. }
  18.  
  19. public void setScore(int score) {
  20. this.score = score;
  21. }
  22.  
  23. public int getAge() {
  24. return age;
  25. }
  26.  
  27. public void setAge(int age) {
  28. this.age = age;
  29. }
  30.  
  31. @Override
  32. public int compareTo(User o) {
  33. int i = this.getAge() - o.getAge();//先按照年龄排序
  34. if(i == 0){
  35. return this.score - o.getScore();//如果年龄相等了再用分数进行排序
  36. }
  37. return i;
  38. }
  39.  
  40. }
  41.  
  42. public static void main(String[] args) {
  43. List<User> users = new ArrayList<User>();
  44. users.add(new User(78, 26));
  45. users.add(new User(67, 23));
  46. users.add(new User(34, 56));
  47. users.add(new User(55, 23));
  48. Collections.sort(users);
  49. for(User user : users){
  50. System.out.println(user.getScore() + "," + user.getAge());
  51. }
  52. }

test2

输出结果:
55,23
67,23
78,26
34,56

=======================

Collections提供的第二种排序方法sort(List<T> list, Comparator<? super T> c)

  1. package core.java.collection.collections;
  2.  
  3. public class Students {
  4.  
  5. private int age;
  6. private int score;
  7.  
  8. public Students(int age, int score){
  9. super();
  10. this.age = age;
  11. this.score = score;
  12. }
  13.  
  14. public int getAge() {
  15. return age;
  16. }
  17. public void setAge(int age) {
  18. this.age = age;
  19. }
  20. public int getScore() {
  21. return score;
  22. }
  23. public void setScore(int score) {
  24. this.score = score;
  25. }
  26. }
  27. public static void main(String[] args) {
  28. List<Students> students = new ArrayList<Students>();
  29. students.add(new Students(23, 100));
  30. students.add(new Students(27, 98));
  31. students.add(new Students(29, 99));
  32. students.add(new Students(29, 98));
  33. students.add(new Students(22, 89));
  34. Collections.sort(students, new Comparator<Students>() {
  35.  
  36. @Override
  37. public int compare(Students o1, Students o2) {
  38. int i = o1.getScore() - o2.getScore();
  39. if(i == 0){
  40. return o1.getAge() - o2.getAge();
  41. }
  42. return i;
  43. }
  44. });
  45. for(Students stu : students){
  46. System.out.println("score:" + stu.getScore() + ":age" + stu.getAge());
  47. }
  48. }

test3

输出结果:
score:89:age22
score:98:age27
score:98:age29
score:99:age29
score:100:age23

从上面的例子我们可以看出Students类没有实现Comparable<T>接口,只是在sort()方法
中多传入一个参数,只不过该参数是一个接口我们需要实现其compare方法。

list集合排序的更多相关文章

  1. Java比较器对数组,集合排序一

    数组排序非常简单,有前辈们的各种排序算法,再加上Java中强大的数组辅助类Arrays与集合辅助类Collections,使得排序变得非常简单,如果说结合比较器Comparator接口和Collato ...

  2. ArrayList集合排序

    using System;using System.Collections;using System.Collections.Generic;using System.Text; namespace ...

  3. 【Java进阶】---map集合排序

    map集合排序         这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题.   比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按 ...

  4. CopyOnWriteArrayList集合排序异常问题

    1.集合自定义排序实现 对List集合的自定义排序想必大家都知道要使用如下的方式,通过实现Comparator接口并实现compare方法来实现. /** * * @方法名 changeChain * ...

  5. 二维码扫描&集合排序

    一.二维码扫描机制 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构 ...

  6. .Net中集合排序的一种高级玩法

    背景: 学生有名称.学号, 班级有班级名称.班级序号 学校有学校名称.学校编号(序号) 需求 现在需要对学生进行排序 第一排序逻辑 按学校编号(序号)排列 再按班级序号排列 再按学生学号排列 当然,在 ...

  7. Java集合排序及java集合类详解--(Collection, List, Set, Map)

    1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一 ...

  8. Java提高(5)---map集合排序

    map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按照成绩的好坏进行排序 ...

  9. 集合排序 Comparator和Comparable的使用区别

    Java 排序 Compare  Comparator接口 Comparable接口 区别 在Java中使用集合来存储数据时非常常见的,集合排序功能也是常用功能之一.下面看一下如何进行集合排序,常用的 ...

  10. map集合排序

    默认情况下,HashMap.HashTable.TreeMap.LinkedHashMap的排列顺序比较: package com.per.sdg.demo; import java.util.Has ...

随机推荐

  1. 分析轮子(六)- LinkedList.java

    注:玩的是JDK1.7版本 一:先上类的继承结构图 二:再看一下他的底层实现数据结构 三:然后从源码中找点好玩的东西 1)双向链表的结构构成元素,头指针.尾指针.节点信息(前向指针.后向指针.节点信息 ...

  2. ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要

    ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm --  Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 ...

  3. jmeter 执行python脚本

    jmeter 可以通过Jython 执:行python代码 1.下载Jython jar包:http://www.jython.org/downloads.html 2.把下载的Jython 的jar ...

  4. MacOS下保护浏览器主页和默认搜索

    Windows流氓软件已被中国人玩烂了, 终于连Mac也被沦陷. 视频演示地址: http://v.youku.com/v_show/id_XMTMwMTk4MzQ0MA==.html

  5. java maven通过SMTP发送QQ邮件的完全步骤

    1.首先打开QQ邮箱的SMTP服务,因为QQ邮箱对于一般的用户都是默认关闭SMTP服务的. 找到SMTP服务的选项,可以看到此处默认是关闭的,点击开启,然后腾讯会进行一些身份验证,身份验证通过以后,腾 ...

  6. Super expression must either be null or a function, not undefined

    按照之前买的用JavaScript开发移动应用的例子来编写的,然后报了这个错.我的头部声明是这样的 var React = require('react-native'); var { Text, V ...

  7. 第四百零四节,python网站第三方登录,social-auth-app-django模块,

    第四百零四节,python网站第三方登录,social-auth-app-django模块, social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块 目 ...

  8. 我们正在招聘java工程师,想来美团工作吗?

    我们希望你有? 1.3年以上Java服务器开发经验,精通Java及面向对象设计开发,熟悉主流web框架 2.熟悉网络编程,熟悉TCP/IP协议,熟悉互联网应用协议 3.有大规模分布式系统设计与开发经验 ...

  9. 根据xlsx模板生成excel数据文件发送邮件代码

    package mail; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  10. JS字符串常用方法总结

    1.toLowerCase(): 把字符串转为小写,返回新的字符串. var str="Hello World"; var str1=str.toLowerCase(); cons ...