1、比较comparable和comparator,选择正确的方法进行排序

Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序,对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。

Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序。

因此,要想对对象中的内容按照一定的顺序进行整体排序,应选择comparator比较器。

2、以学生管理为例,要求按照成绩的升序进行排序。

在写好基本学生类和管理类的基础上进行添加修改。

首先应该在学生类中实现Comparator比较类,并重写ComparaTo方法,若按升序排序,结构如下:

public class Student implements Comparable<Student>{
    ....
    @Override
    public int compareTo(Student o) {
        return this.grade-o.grade;//升序
    }
}

然后,在测试类方法中,使用collections.sort()或arrays.sort()方法即可进行排序,具体如下:

/*
          让学生 按照年龄排序 升序
         */
        Collections.sort(list);//要求 该list中元素类型  必须实现比较器Comparable接口

list是用来储存学生信息的。经证明此方法可行。

3、自定义Comparator规则

如果在使用的时候,想要独立的定义规则去使用,可以采用Collections.sort(List list,Comparetor<T> c)方式,自己定义规则,具体如下:

Collections.sort(list, new Comparator<Student>() {
    @Override
    public int compare(Student o1, Student o2) {
        return o2.getAge()-o1.getAge();//以学生的年龄降序
    }
});

结果如下:

Student{name='rose', age=18}
Student{name='ace', age=17}
Student{name='jack', age=16}
Student{name='abc', age=16}
Student{name='mark', age=16}

经测试,此方法也是可行的。

如何将对象中的内容按照一定的顺序进行排序相关推荐

  1. java 比较对象内容是否相同的_Java 比较对象中的内容是否一致

    获取对象中的所有属性 private static Field[] getAllFields(Object object) { Class clazz = object.getClass(); Lis ...

  2. C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入

    例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...

  3. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  4. js中显示一个指定html文档,JS实现选定指定HTML元素对象中指定文本内容功能示例...

    本文实例讲述了JS实现选定指定HTML元素对象中指定文本内容功能.分享给大家供大家参考,具体如下: 该功能用处多多,可以灵活运用之!主要函数如下: //选中文本中指定部分 function selec ...

  5. JavaScript学习(三十九)—对象中内容的操作

    JavaScript学习(三十九)-对象中内容的操作 一.对象中内容的操作:增.删.改.查 (一).增:给对象添加属性或者方法 1)方式1:对象名称.属性名=属性值: 2)方式2:对象名称['属性名' ...

  6. python中一切内容都可以称为对象吗_python对象类型及其运算2

    python一切皆对象,所有内容都是由对象展开的,对象是由类实例化而来. python中存储的所有数据都是对象. 每个对象都有一个身份.一个类型和一个值. 身份:eg:school="bei ...

  7. html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...

    jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办? 再做一个前台的ajax方法 查网上用formdate方法上传.可是进了接口之后一直在控制台获取不到for ...

  8. 七牛云对象存储中的内容无法获取外链和无法下载的解决方法

    问题描述 打开七牛云,发现自己之前上传的文件无法进行下载,并且也不能获取外链了. 原因是自己之前的外链默认域名被收回了. 解决方法 概述:新建一个存储空间,将之前失效空间里的文件同步至新的存储空间中. ...

  9. 人工智能技术在内容行业的应用:AI对中长尾内容平台还是奢侈品

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 导读:随着人工智能技术的发展,媒体行业本身在不断地发生变化,从传统媒体到新媒体,改变的不仅是信息载体,更是一种新的逻辑,无论是内容 ...

最新文章

  1. myeclipse 如何显示序号
  2. seaborn系列 (17) | 回归模型图lmplot()
  3. jQuery给css增加!important
  4. python算法与数据结构-希尔排序算法(35)
  5. 多库共存 包装集的问题 点击按钮创建一个p 几个属性介绍 jQuery的插件
  6. 【算法竞赛学习】AI助力精准气象和海洋预测
  7. 让 步( 写的太好了!)
  8. 依赖第三方库时出现的问题:Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16
  9. 1使用技巧_新版PubMed使用技巧1
  10. PHP学习总结(8)——PHP入门篇之WAMPServer集成环境安装和配置
  11. 修改cas5成功html文件,手把手教Apereo CAS5.2.3 Server端 增量开发 自定义登录页,增加验证码,注册,修改密码等功能的方式...
  12. 从零開始学androidlt;TabHost标签组件.二十九.gt;
  13. 经过 8 万画作+人工注释训练,算法学会了赏析名画
  14. java rgb8888转rgb565_Swift RGB888转RGB565
  15. 八数码问题BFS算法
  16. JS实现快递单打印功能
  17. android小米手机变慢,小米安卓系统手机上网速度慢的解决方法
  18. 水下环境线结构光传感器的校正模型
  19. oracle 甩手 java ee_Eclipse正式代替Oracle接管Java EE
  20. (阿里巴巴开发手册)为什么阿里巴巴推荐内部员工使用StringBuilder?

热门文章

  1. Git missing Change-Id in commit message footer解决方法
  2. Ngui之UI框架的层级处理
  3. WinForm中DataGridView的TextBoxColumm换行
  4. 160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘
  5. transition的唧唧歪歪
  6. 唯一索引与主键索引的比较
  7. JS 利用数组拼接html字符串
  8. 雅虎中国,奇虎全面杀入威客领域
  9. VS2005 添加 Microsoft.Office.Tools.Word.dll 等引用
  10. 【剑指offer】面试题46. 把数字翻译成字符串(java)