compare 方法:

通过实现java.util.comparator接口的实现类的重载,重载的方法里面写入比较条件特定字段的差值(比较条件)并返回,然后在创建一个实现comparator接口的实现类对象(也就是真正的比较器),用数组的sort方法按照特定字段进行升序或者降序(默认是升序)。(不能在实体类里面重载compare方法,需要单独创建实现comparator接口类来实现)

调用方式 :Arrays.sort(对象数组,比较器实例);

(对象数组按照类中compare方法设置的比较条件排序)

public class CompareDemo {public static void main(String[] args) {// CompareImp compareImp = new CompareImp();Customer[] customers = new Customer[3];customers[0]=new Customer("张三",18);customers[1]=new Customer("李四",20);customers[2]=new Customer("王五",4);Arrays.sort(customers, new Comparator<Customer>() {@Overridepublic int compare(Customer o1, Customer o2) {return o1.getAge()-o2.getAge();}});// Arrays.sort(customers,compareImp);for (Customer c:customers) {System.out.println(c.toString());}}
}//class CompareImp implements Comparator<Customer>{
//
//    @Override
//    public int compare(Customer o1, Customer o2) {
//        return o1.getAge()-o2.getAge();
//    }
//
//}class Customer  {private String name;private Integer age;public Customer() {}public Customer(String name, Integer age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Customer{" +"name='" + name + '\'' +", age=" + age +'}';}
}

打印

compareTo 方法:

实现Java.lang.Comparable接口的实现类(数组元素的类)中进行重载,在方法里面写入比较条件并返回,然后直接调用数组的sort方法按照特定字段进行默认升序

调用方式:Arrays.sort(对象数组);

(对象数组按照比较器的比较条件进行排序)

public class CompareToDemo {public static void main(String[] args) {User[] u = new User[6];u[0] = new User("张三", 10);u[1] = new User("李四", 20);u[2] = new User("王五", 5);u[3] = new User("王五", 5);u[4] = new User("张三", 1);u[5] = new User("隔壁老王", 10);/*数组的sort方法按照特定字段进行默认升序*/Arrays.sort(u);for (User o : u) {System.out.println(o.toString());}}
}class User implements Comparable<User> {private String name;private Integer age;public User() {}public User(String name, Integer age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(User o) {/*降序*/return o.age-this.age;/*升序*///return o.age-this.age;}}

打印

compare和compareTo方法的区别相关推荐

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

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

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

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

  3. JAVA中返回值为字母时_LeetCode#524通过删除字母匹配到字典里最长单词-java中CompareTo方法用法以及Comparator中Compare方法返回值...

    import java.util.Collections; import java.util.Comparator; import java.util.List; /* 524. 通过删除字母匹配到字 ...

  4. compare和compareTo使用区别

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

  5. Java compare方法和compareTo方法

    1.compare 对于 public int compare(Object arg0, Object arg1)的理解 //数组排序 String[] str = new String[5]; Ar ...

  6. java compare时间_java.time.LocalDateTime compareTo()方法

    java.time.LocalDateTime compareTo()方法 java.time.LocalDateTime.compareTo(ChronoLocalDateTime other)方法 ...

  7. java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序

    本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...

  8. compareto方法_Java compareTo() 字符串方法

    作者:web全栈 出自:ITPUB博客 原文:blog.itpub.net/69942367/viewspace-2721613/ 定义和用法 compareTo()方法按字典顺序比较两个字符串.比较 ...

  9. java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚

    之前在整理Redis的五大数据结构的时候,其中提到了list.set等知识点的时候,就想起来刚上大学那会的青涩时光,抱着一本Java生啃得时候得傻样,跟女朋友交流的时候,她说那你怎么不也顺便整理一下啊 ...

最新文章

  1. 将表里的数据批量生成INSERT语句的存储过程 增强版
  2. python turtle画椭圆-python turtle 绘制太极图的实例
  3. struts2+kindeditor4.0.5的上传图片的实现
  4. jdbc事务 jta事务_将非事务性资源绑定到JTA事务中的几种模式
  5. java8 linq4j_Java 8仍然需要LINQ吗? 还是比LINQ更好?
  6. mysql中的or_mysql中or和in的效率问题
  7. java后端面试经验(自用收藏)
  8. ffmpeg代码实现自定义encoder
  9. Error: package or namespace load failed for ‘utils’ in dyn.load(file, DLLpath = DLLpath, ...): unab
  10. launching IDEA-If you already have a 64-bit JDK installed, define a JAVA_HOME...问题解析处理
  11. cmake简洁教程 - 第五篇
  12. Intel Technology Journal
  13. 面试官问上一家公司离职原因怎么办?
  14. oracle 数据库 ORA-28000错误的原因及解决办法
  15. linux命令之------Cat命令
  16. 设计模式六大原则(SOLID)
  17. TL民营医院奖金分配方案比较研究
  18. 图片压缩工具Thumbnailator的使用
  19. ICP in VTK
  20. 非常有用的免费UI设计工具和资源

热门文章

  1. Python之strip详解
  2. 超全!我常用的 70 个数据分析网址
  3. Springmvc-简单入门
  4. 使用DirectDraw直接显示YUV视频数据
  5. 防止网站被恶意镜像或反向代理方法
  6. 利用网络,下载网络资源
  7. 织梦DedeCMS管理员动态密码登录插件下载
  8. 软件开发之版本控制方式
  9. 从你的全世界路过---陌陌X-SIGN还原
  10. (找规律)3,5,7,2,4,11,7,5,29,23,? 填什么数字