Comparable和Comparator排序
开发工具与关键技术:MyEclipse 10、Java
作者:潘玉莹
撰写时间:2019-04-12
Comparable介绍
Comparable属于排序接口,若一个类实现了Comparable接口,则表明该类可以进行排序,此排序实在类内部实现的。Comparable默认是通过collections类的Collections.sort方法进行自动排序的
List集合Comparable排序
第一步:声明一个类,实现comparable接口
使用关键字implements来实现类;声明一个构造器,此构造器主要是来用来声明对象的
声明两个私有成员变量。
第二步:实现comparable接口就要实现接口里面的comparaTo方法;排序的顺序是根据o来决定的,comparaTo里的参数是属于大的,成员变量是属于小的。compareTo字符串默认排列顺序
如图所示:
第三步:声明对象,此对象是根据上面的有参构造器声明的;如果没有则先声明构造器将会报错。并往对象加入数据;以ArrayList为例。如图所示:
遍历数据:因为添加数据的为对象,我们不能通过打印对象来输出数据,所以我们需要通过遍历对象来输出数据。遍历数据有多种方法:for循环,迭代器,while;因为在类中我们使用了private来保护成员变量所以需要通过get方法获取成员变量。
第四步 调用collectios的排序方法collectios.Sort;
Collections.sort(persons);排序结果则会按照comparaTo方法年龄从下到大进行排序;
Comparator介绍
Comparator是比较接口,若一个类要实现Comparator接口,就一定要实现
compara(T o1 , T o2); compara(T 01,T 02) 是比较o1和o2的大小;
从小到大:o1-o2 从大到小:o2-o1
Comparable 与comparator用法差不多,只是在调用collections.sort方法不同:如图所示
第一步:声明一个类,在类里面声明私有成员变量,创建一个构造器
第二步:调用sort排序方法
Comparable和Comparator区别比较
comparable和comparator要求是有序的才支持使用
Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”。Comparator是比较器,我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。
用Comparable简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,但是需要修改源代码。 用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。