Comparator接口
Comparator接口
今天来给大家介绍下java.utils包下的Comparator接口。该接口代表一个比较器,java数组工具类和集合工具类中提供对sort方法排序就是使用 Comparator接口来处理排序的。
Comparator接口中有一个方法int compare(T o1, T o2)。这个方法返回值是int类型,如果返回值小于0,说明比较结果是o1<o2,如果返回值等于0,说明比较结果是o1=o2,如果返回值大于0,则说明比较结果是o1>o2。
既然是接口,那么我们就可以实现它,来自定义其中对比较规则,即可实现在一个List列表中将元素按照某个属性进行排序。
下面我们用代码举例说明,如下:
package com.java.utils.Comparator;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;/**
* 类说明:
* 比较器Comparator接口的应用
*/
public class ComparatorTest {/*** 实体对象类 */static class User {String name;int age;public User(String name,int age) {this.name=name;this.age=age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}/*** 自定义比较器* 根据名称比较*/static class MyComparatorName implements Comparator<User>{@Overridepublic int compare(User u1, User u2) {return u1.getName().compareTo(u2.getName()) * -1;}}/*** 自定义比较器* 根据年龄比较*/static class MyComparatorAge implements Comparator<User>{@Overridepublic int compare(User u1, User u2) {return (u1.getAge() - u2.getAge());}}//测试public static void main(String[] args) {List<User> list =new ArrayList<User>();User u1 = new User("a", 2);User u2 = new User("d", 0);User u3 = new User("c", 3);list.add(u1);list.add(u2);list.add(u3);Collections.sort(list, new MyComparatorName());for(User u :list){System.out.println(u.getName());}Collections.sort(list, new MyComparatorAge());for(User u :list){System.out.println(u.getAge());}}}
在上面对例子中,我们首先按照名称从大到小进行排序,输出结果是d、c、a然后又按照年龄从小到大进行排序,输出结果是0、2、3。
需要注意的是,Collections.sort方法默认是按照返回结果从小到大进行排序,如果我们需要从大到小则在实现比较器大时候将返回结果乘以-1即可。
是不是很简单?如果是我们自己实现比较器,那么我们就可以根据实际的业务需求去实现排序。
Comparator接口相关推荐
- Java中比较对象的两个接口Comparable接口和Comparator接口
2019独角兽企业重金招聘Python工程师标准>>> jdk文档是这样介绍的 1. public interface Comparable<T>:此接口强行对实现它 ...
- Java基础之Comparable接口和Comparator接口的比较
前言 就是普普通通的写这么一篇文章,java集合类估计java程序猿都知道,那就写一点小众的. 在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那 ...
- java arraylist comparable_Java 两种ArrayList集合自定义对象属性排序,Comparator接口 或 Comparable接口...
1,Comparator接口 -- 重写Comparator public class User { private String id; private String name; public Us ...
- Comparable接口和Comparator接口
目录 1 介绍 2 Comparable接口 3 Comparator接口 4 总结 1 介绍 有这样2个人,一个人光头,一个人有黑色头发,现在不允许染发,只允许光头的带假发,理由是有头发的人没有必要 ...
- Java之——利用Comparator接口对多个排序条件进行处理
转载自:http://blog.csdn.net/l1028386804/article/details/56513205 膜拜大神··· 一.需求 假设现在有个如此的需求:需要对一个这样的雇员列表进 ...
- Comparable接口与Comparator接口
[Comparable和Comparator源码] java.lang.Comparablepublic interface Comparable<T> {public int compa ...
- 【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )
文章目录 一.报错信息 二.解决方案 一.报错信息 使用 Comparator 接口 , 对 ArrayList 集合中的元素排序无效 ; 打印之后没有进行排序 ; 错误代码就不贴出来了 , 随便搜索 ...
- Java6.0中Comparable接口与Comparator接口详解
Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...
- 007_JDK的Comparator接口
1. JDK1.8中的Comparator接口 package java.util;public interface Comparator<T> {int compare(T o1, T ...
- Java 中类的比较与排序方法(应用Comparable接口与Comparator接口)通俗易懂
引言 在平时写Java的程序的时候,如果要进行一些基本类型的变量的比较,可以很方便得调用Math.max().Math.min()等方法,如果要对数组或者列表进行排序,也可以用Arrays.sort( ...
最新文章
- 10亿级数据规模的半监督图像分类模型,Imagenet测试精度高达81.2% | 技术头条...
- 如何配置jdk环境变量
- LSD-SLAM 编译过程(Ubuntu 14.04 + ROS Indigo
- SQL server 2000/2005 智能感应插件(菜鸟新手的帮手)
- [蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)
- mssql2008极占内存
- 无线网络MIMO技术浅谈
- Linux内核分析之搭建Mykernel
- python的书写格式_python 快速写作技巧,格式
- 第三方物流(Third Party Logistics,3PL)
- 中国智能座舱行业发展前景展望与投资战略规划研究报告2022年版
- 商业计划书范文3000_大学生商业计划书范文
- https开头的网址是什么意思_网址是什么意思?基础知识普及
- Unity3D游戏引擎最详尽基础教程
- realize与recognize辨析
- 三维可视化引擎让空间数据管理更高效
- java.util工具类之Currency类
- 思维导图软件freemind的使用教程
- 利用闲置笔记本电脑搭建linux服务器并布置自己的网站
- 【附源码】计算机毕业设计java志愿者招募系统设计与实现
热门文章
- linux中修改mycat端口,mycat修改配置之后需要重启吗
- 我在CSDN开博啦!
- 宗宁:云在指尖被定性为传销,三级分销们怕了么?
- 微信营销十二(短视频、直播)
- 大河抽奖盲盒V1.9.12开源程序源码
- JS:将资源生成二维码
- 联发科技推出曦力A系列 掀起智能手机科技普及革命
- c语言浮点数格式化,关于c ++:如何使用C的sprintf()安全格式化浮点数/双精度数?...
- codeblocks安装、使用、调试教程
- 创意搜狗输入法设计理念(转2008-02-04 21:14)