compareTo

a.compareTo(b):将此对象与指定的对象进行比较以进行排序。

Comparable接口:比较值并返回一个int,它告诉值是否比较小于,等于或大于。

如果您的类对象具有自然顺序,请实现该Comparable<T>接口并定义此方法。所有具有自然排序实现的Java类Comparable<T>- 示例:String,包装类,BigInteger

compare

compare(a, b):比较其两个参数的顺序。

比较器接口: 比较两个对象的值。这被实现为的一部分Comparator<T>界面,并且典型的使用是定义实现此的一个或多个小工具类,传递给方法,例如sort()或使用通过排序数据结构,例如TreeMapTreeSet。您可能希望为以下内容创建Comparator对象:

两个标红的字段说明一个对象排序,一个是对传的参数进行排序。

compareTo和equal

在Java中我们常使用Comparable接口来实现排序,其中compareTo是实现该接口方法。我们知道compareTo返回0表示两个对象相等,返回正数表示大于,返回负数表示小于。同时我们也知道equals也可以判断两个对象是否相等。

下面的例子用age比较排序,用name比较是否相等

public class Student implements Comparable<Student> {private String id;private String name;private int age;public String getId() {return id;}public void setId(String id) {this.id = id;}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 Student(String id, String name, int age){this.id = id;this.name = name;this.age = age;}@Overridepublic boolean equals(Object obj){if(obj == null){return false;}if(this == obj){return true;}if(obj.getClass() != this.getClass()){return false;}Student student = (Student)obj;if(!student.getName().equals(getName())){return false;}return true;}@Overridepublic int compareTo(Student student) {//升序return this.age - student.age;//降序//return student.age - this.age;}
}

客户端主程序

    public static void main(String[] args){List<Student> list = new ArrayList<>();list.add(new Student("1", "chenssy1", 24));list.add(new Student("2", "chenssy1", 26));Collections.sort(list);   //排序}

compare

事例演示

public class Teacher {private int age;public Teacher(int age) {this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

比较器

public class TeacherComparator implements Comparator<Teacher> {@Overridepublic int compare(Teacher o1, Teacher o2) {//升序return o1.getAge() - o2.getAge();//降序//return o2.getAge() - o1.getAge();}
}

客户端主程序

    public static void main(String[] args){List<Teacher> list = new ArrayList<>();list.add(new Teacher(18));list.add(new Teacher(30));list.add(new Teacher(22));list.add(new Teacher(43));list.add(new Teacher(21));Collections.sort(list, new TeacherComparator());System.out.println(list);}

compare()和compareTo()区别相关推荐

  1. java的compare to(),java – compare()和compareTo()之间有什么区别?

    从 JavaNotes: > a.compareTo(b): 可比较的接口:比较值并返回一个int,它告诉这些值是否小于,等于或大于. 如果你的类对象有一个自然的顺序,实现Comparable& ...

  2. compare和compareTo使用区别

    一.compare实现了Comparator接口,compareTo实现了compareable接口.它们可以给对象和基本类型进行排序.给基本类型排序可以直接调用Arrays.sort()和Conll ...

  3. compare和compareTo方法的区别

    compare 方法: 通过实现java.util.comparator接口的实现类的重载,重载的方法里面写入比较条件特定字段的差值(比较条件)并返回,然后在创建一个实现comparator接口的实现 ...

  4. Comparator、compare、compareTo

    Comparator :是一个接口,有compare(a,b)方法,主要用来排序. compare(a,b) 方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数. compare ...

  5. java BigDecimal equals和compareTo区别

    为什么80%的码农都做不了架构师?>>>    对于BigDecimal的大小比较,用equals方法的话会不仅会比较值的大小,还会比较两个对象的精确度,而compareTo方法则不 ...

  6. java中compare语句的用法,compare的用法_java中 compareTo()的程序代码及用法

    compare的用法与区别? 一.用法 v. (动词) 1.compare的基本意思是"比较,对照",主要用于比较事物的典型特征及其价值,而不在于比较相同与不同. 2.compar ...

  7. compareto方法_compare方法和compareTo方法区别

    字符串数组sort方法是默认按照字典顺序排序 对象数组 按照对象的某字段排序可以用compare和compareTo两种方法 对对象数组排序: 1.compare 方法得用一个单独继承java.uti ...

  8. Comparator类中的compare(T o1,T o2)和compareTo()的使用与疑惑解答

    这几天做项目刚好遇到需要排序的需求,大概就是你查询一个list,然后list中保存的是map数据,你需要根据map中的若干个数据排序,比如说 List<Map<String, Object ...

  9. Java中的list、set、map区别

    List 有序,可重复 ArrayList 优点: 底层数据结构是数组,查询快,增删慢. 缺点: 线程不安全,效率高 Vector 优点: 底层数据结构是数组,查询快,增删慢. 缺点: 线程安全,效率 ...

最新文章

  1. Android中如何使用ViewPager实现类似laucher左右拖动效果
  2. 【风控建模】在python中使用评分卡技术
  3. 团队任务4-每日例会(2018-12-6)
  4. 第二节: 比较EF的Lambda查询和Linq查询写法的区别
  5. 计算机设备故障类型有哪些,计算机硬件故障有哪些
  6. Unix——学习《Unix环境高级编程》找不到“apue.h”方法
  7. Linux 中显示所有正在运行的进程
  8. OpenStack版本比较之Keystone
  9. 小米集团国际总部落地深圳;国美电器创始人黄光裕出狱;TiKV 4.0 发布 | 极客头条...
  10. 程序员该如何向奶奶解释 SQL 和 NoSQL?
  11. 一线架构师实践指南阅读体会_ADMEMS方法体系理解
  12. BATJTMD,大厂招聘,都怎么面Java程序员?
  13. webotAI网页版上线啦!
  14. 千万别小瞧九宫格 一道题就能让候选人原形毕露!
  15. 事业单位计算机类专技岗职称,事业单位改革,专技岗和管理岗哪个好?
  16. 现代社会科学的优选法:谈取向运作法
  17. 新松机器人socket_谈谈本人对新松的印象,给后辈们一点启示
  18. 董明珠回应“对赌”:格力与小米没有可比性
  19. nginx安全下载模块ngx_http_secure_link_module
  20. ORB-SLAM: a Versatile and Accurate Monocular SLAM System

热门文章

  1. 逆置线性表(线性表)
  2. Rust之错误处理(三):panic!还是不要panic!
  3. 微信公众号对接chatgpt开发教程
  4. grep的语法和用法
  5. Revit建模:使用技巧【族类应用】希望能帮大家提高效率
  6. ECNU ||西班牙馅饼
  7. 利用supervisor对服务进行管理
  8. Kotlin--Sealed Class Sealed Interface
  9. SQL 2014新功能介绍系列3 - 备份还原篇
  10. mysql创建三个表相互关联_mysql – 在三个表之间创建关系