知识大全 如何给一个对象排序

Posted

篇首语:人喜欢习惯,因为造它的就是自己。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何给一个对象排序相关的知识,希望对你有一定的参考价值。

  当我们排序的对象不止是简单的数据类型的时候

  我们可以通过 实现Comparable 和Comparator 接口来完整对 对象的排序

  Comparable和Compartor 的区别?

  Comparable 是一个自身已经支持自比较的(如String Integer) 的接口

  Comparator 可以说是一个 专用的比较器 当对象本身 不支持自排序和自比较函数的时候

  我们可以通过实现Compartor 来比较两对象的大小

  Comparable 是一个比较通用的接口 用户可以通过他实现 排序功能

  而 Comparator 可以看作一种算法 一种设计模式 (可以看作是一个策略模式 就是不改变对象自身 而用一个策略对象改变对象行为)

  Comparable 相对比较固定 与具体类绑定

  Comparator 比较灵活 可以与任何需要实现功能的类 绑定

  Comparable 可以说是 静态绑定

  Comparator 可以说是动态绑定

  Comparable

  此接口强行对实现它的每个类的对象进行整体排序 此排序被称为该类的自然排序 类的 pareTo 方法被称为它的自然比较方法

  实现此接口的对象列表(和数组)可以通过 Collections sort(和 Arrays sort)进行自动排序 实现此接口的对象可以用作有序映射表中的键或有序集合中的元素 无需指定比较器

  对于类 C 的每一个 e 和 e 来说 当且仅当 (pareTo((Object)e ) == ) 与 e equals((Object)e ) 具有相同的布尔值时 类 C 的自然排序才叫做与 equals 一致 注意 null 不是任何类的实例 即使 e equals(null) 返回 false pareTo(null) 也会抛出 NullPointerException

  强烈推荐(虽然不是必需的)使自然排序与 equals 一致 这是因为在使用其自然排序与 equals 不一致的元素(或键)时 没有显式比较器的有序集合(和有序映射表)行为表现 怪异 尤其是 这样的有序集合(或有序映射表)违背了根据 equals 方法定义的集合(或映射表)的常规协定

  而 Comparator

  比较函数强行对某些对象 collection 进行整体排序 可以将 Comparator 传递给 sort 方法(如 Collections sort) 从而允许在排序顺序上实现精确控制 还可以使用 Comparator 来控制某些数据结构(如 TreeSet 或 TreeMap)的顺序

  当且仅当对于一组元素 S 中的每个 e 和 e 而言 (pare((Object)e (Object)e )== ) 与 e equals((Object)e ) 具有相等的布尔值时 Comparator c 强行对 S 进行的排序才叫做与等号一致 的排序

cha138/Article/program/Java/hx/201311/26524

相关参考

知识大全 Java中对象按照属性排序

Java中对象按照属性排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  项目中经常需要用到比如

知识大全 C#数组排序与对象大小比较

C#数组排序与对象大小比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 java中对于复杂对象排序的模型及其实现

  排序是编程中经常要碰到的问题如果只是一般的数据库数据那么我们完全可以用数据sql语言来排序但有的时候情况并不是这样在一些特殊情况下我们不得不自己在java中写一些排序而通常排序是一件让程序员非常恼

知识大全 睡眠排序

  今天看到一个帖子帖名叫《Geniussortingalgorithm:Sleepsort》看过之后感觉虽然实用价值不高但挺受启发的帖上来给大家分享下   ManamI

知识大全 家里给我介绍了一个相亲对象,可我一点都不想和对方聊,怎么办

家里给我介绍了一个相亲对象,可我一点都不想和对方聊,怎么办不想跟他谈就直接跟他说、你们是相亲的那肯定是你们之间的亲朋好友介绍的、拖着不说只会让你们之间的人也不好做!我同学给我介绍了一个相亲对象对于一个

知识大全 我表嫂给我介绍了一个对象,见面的时候我父母喜欢他,说他人老实忠诚,实在,会过日子,

我表嫂给我介绍了一个对象,见面的时候我父母喜欢他,说他人老实忠诚,实在,会过日子,老实人会过日子,但甜蜜少了你会觉得生活枯燥,如果他不是暴力男可以漫漫去改变下他的我是一个女警察,父母给我介绍了一个对象

知识大全 家里介绍一个相亲对象 认识2个多月了关系未确定 七夕来了想给送礼物给她什么合适

家里介绍一个相亲对象认识2个多月了关系未确定七夕来了想给送礼物给她什么合适她喜欢什么,你就送什么,如果不知道送什么东西,就浪漫家里介绍的相亲对象,认识一个多月,但不冷不热的,关系没确定,男方你对他是什

知识大全 排序 - 插入排序 - 希尔排序

  希尔排序(ShellSort)是插入排序的一种因DLShell于年提出而得名  希尔排序基本思想  基本思想  先取一个小于n的整数d作为第一个增量把文件的全部记录分成d个组所有距离为dl的倍数的

知识大全 排序Select中Option项的一个示例

排序Select中Option项的一个示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  For

知识大全 数据结构之拓扑排序

概念  有向无环图(DirectedAcyclicGraph):一个无环的有向图简称DAG图  拓扑排序(TopologicalSort)将一个有向无环图G中所有顶点排成一个线性序列使得对图中任意一对