/*Comparator是java.util包里的一个接口,使用时应该实现导入相应的包,

*再写一个实现了Comparator接口的类,并复写int compare(Object o)方法,

*写出你的判断语句(例如:以下代码是按照年龄的递增顺序排序,年龄相同则按照工资的数目递增排序)

*把这个类添加到Arrays.sort()或Collections.sort()中(例如:定义一个list集合,用来存放对象,可以这样写:Collections.sort(list,new 实现类();))

*/

package test;

import java.util.*;

public class ComparaUser {

private String name;

private int age;

private double salary;

public ComparaUser(){}

public ComparaUser(String name, int age ,Double salary){

this.name = name;

this.age = age;

this.salary = salary;

}

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;

}

public double getSalary() {

return salary;

}

public void setSalary(double salary) {

this.salary = salary;

}

@SuppressWarnings("unchecked")

public static void main(String[] args) {

/*定义一个list集合,存放ComparaUser类型,

使用Array的静态方法asList(T....a)进行添加*/

List list = new ArrayList(Arrays.asList(

new ComparaUser("张三",24,200.0),

new ComparaUser("李四",28,233.1),

new ComparaUser("王二",25,500.3),new ComparaUser("麻五",24,300.5)));

Collections.sort(list,new Comp());

for(ComparaUser user :list){

System.out.println(user.getName()+" "+user.getAge()+" "+user.getSalary());

}

}

}

class Comp implements Comparator{

//复写Comparator的compara接口

@Override

public int compare(Object o1,Object o2){

ComparaUser user1 = (ComparaUser)o1;/*类型转换,转换成我们所比较的对象*/

ComparaUser user2 = (ComparaUser)o2;

/*按年龄排序,如果第一个user1的年龄大于user2的年龄,则返回 1 (按照升序排列)

小于返回 -1 降序排列 ; 如果相等,则按照工资再比较(参考年龄的比较方式)

*/

if(user1.getAge() > user2.getAge())

return 1;

else if(user1.getAge() < user2.getAge())

return -1;

else {

if(user1.getSalary() > user2.getSalary())

return 1;

else

return -1;

}

}

}

comparator java_java:Comparator比较器相关推荐

  1. 比较器Comparable(内部比较器)和Comparator(外部比较器)

    比较器Comparable(内部比较器)和Comparator(外部比较器) 1.使用Comparable是从实体类中直接继承Comparable接口,并且重写compareTo方法. 2.使用Com ...

  2. 迟滞比较器Hysteresiswindow和comparator(窗口比较器)原理

    我们在单片机的使用和学习中经常看到迟滞比较器和窗口比较器的概念,现在来学习一下其原理和作用.迟滞比较器在模拟电路中很常见,主要用于各种比较器,几乎和负反馈一样广泛应用.迟滞比较器增加了比较器的抗干扰能 ...

  3. java可比较的和比较器的区别_Java中Compareable和Comparator两种比较器的区别

    对于JDK8而言,有三种实现对象比较的方法: 1.在需要比较的对象类中覆写Object类的equals()方法: 2.需要比较的类继承Comparable接口,然后在其类内部实现compareTo() ...

  4. comparator java_java – 使用自定义Comparator的最大流

    下面是我专门编写的代码,用于在 Java 8 Stream中使用带有max的自定义Comparator. import java.math.BigDecimal; import java.util.* ...

  5. java 比较器comparator_Java中比较器的使用Compare和Comparator

    Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较 ...

  6. Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

    1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...

  7. Java 的Comparator比较器用法

    1.定义:Comparator是外部比较器,用于比较来对象与对象之间的,两个对象进行比较,多用于集合排序,而Comparable可以认为是一个内比较器,根据对象某一属性进行排序的 2.使用方法 1)定 ...

  8. 【PTA】匿名内部类:实现Comparator比较器

    Student类定义如下.利用Arrays工具类中的sort方法对Student数组进行排序.由于Student类没有实现Comparable接口,因此sort方法需要传入一个Comparator比较 ...

  9. Comparable 和 Comparator 比较器

    Comparable :自然排序(自己单独实现) 自然排序的定义 Comparable 接口强行对实现它的每个类的对象进行整体排序 实现过程 实现 Comparable 接口的类必须实现 compar ...

最新文章

  1. 这样的独处,能让你变得越来越优秀
  2. 镜像的分层结构 - 每天5分钟玩转容器技术(11)
  3. Simulating fire sales in a system of banks and asset managers(模拟银行和资产管理系统的折价销售)
  4. linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?
  5. 项目: 推箱子游戏【c/c++】
  6. 用代码的方式增加servlet mapping定义
  7. 美国Palmbeach大学服务器整合改造案例
  8. JAVA利用google的zxing解析二维码QRCODE
  9. Python开发【第二篇】:初识Python
  10. 获取触发事件的元素的ID
  11. 开课吧Java教程什么是类集接口
  12. 智能媒体管理(IMM) Python SDK DEMO
  13. 架构模式: 微服务的基底
  14. python输入一个区间_Python 学习笔记:根据输入年月区间,返回期间所有的月份...
  15. python字节码解析_简单入门python字节码混淆
  16. CH341A BIOS编程器 预安装成功 但无安装成功
  17. wps表格怎么用计算机,怎么样在wps表格中添加计算器
  18. Quartus-II入门(全加器)
  19. 2019最新补单安全小技巧
  20. C2C、O2O、B2B、B2C 是什么?区别在哪里?

热门文章

  1. Micropython TPYBoard 智能温控小风扇资料分享
  2. context:property-placeholder标签实现参数剥离
  3. [转载]hadoop集群默认配置和常用配置
  4. hbase shell命令扩展(转自http://www.netfoucs.com/cuirong1986/article/details/7986900)
  5. 项目发布: error CS0103: 当前上下文中不存在名称“*****”
  6. Open Source的一些网站,自己收集来的
  7. 第一次来,试发一帖!--ASP.NET 2.0 中的SqlCacheDependency特性
  8. golang float string int 相互转换 保留小数位
  9. python time datetime string 相互转换
  10. couchdb 任意命令执行漏洞(cve-2017-12636)