compare和compareTo方法的区别
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方法的区别相关推荐
- java的compare to(),java – compare()和compareTo()之间有什么区别?
从 JavaNotes: > a.compareTo(b): 可比较的接口:比较值并返回一个int,它告诉这些值是否小于,等于或大于. 如果你的类对象有一个自然的顺序,实现Comparable& ...
- compareto方法_compare方法和compareTo方法区别
字符串数组sort方法是默认按照字典顺序排序 对象数组 按照对象的某字段排序可以用compare和compareTo两种方法 对对象数组排序: 1.compare 方法得用一个单独继承java.uti ...
- JAVA中返回值为字母时_LeetCode#524通过删除字母匹配到字典里最长单词-java中CompareTo方法用法以及Comparator中Compare方法返回值...
import java.util.Collections; import java.util.Comparator; import java.util.List; /* 524. 通过删除字母匹配到字 ...
- compare和compareTo使用区别
一.compare实现了Comparator接口,compareTo实现了compareable接口.它们可以给对象和基本类型进行排序.给基本类型排序可以直接调用Arrays.sort()和Conll ...
- Java compare方法和compareTo方法
1.compare 对于 public int compare(Object arg0, Object arg1)的理解 //数组排序 String[] str = new String[5]; Ar ...
- java compare时间_java.time.LocalDateTime compareTo()方法
java.time.LocalDateTime compareTo()方法 java.time.LocalDateTime.compareTo(ChronoLocalDateTime other)方法 ...
- java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序
本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...
- compareto方法_Java compareTo() 字符串方法
作者:web全栈 出自:ITPUB博客 原文:blog.itpub.net/69942367/viewspace-2721613/ 定义和用法 compareTo()方法按字典顺序比较两个字符串.比较 ...
- java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚
之前在整理Redis的五大数据结构的时候,其中提到了list.set等知识点的时候,就想起来刚上大学那会的青涩时光,抱着一本Java生啃得时候得傻样,跟女朋友交流的时候,她说那你怎么不也顺便整理一下啊 ...
最新文章
- 将表里的数据批量生成INSERT语句的存储过程 增强版
- python turtle画椭圆-python turtle 绘制太极图的实例
- struts2+kindeditor4.0.5的上传图片的实现
- jdbc事务 jta事务_将非事务性资源绑定到JTA事务中的几种模式
- java8 linq4j_Java 8仍然需要LINQ吗? 还是比LINQ更好?
- mysql中的or_mysql中or和in的效率问题
- java后端面试经验(自用收藏)
- ffmpeg代码实现自定义encoder
- Error: package or namespace load failed for ‘utils’ in dyn.load(file, DLLpath = DLLpath, ...): unab
- launching IDEA-If you already have a 64-bit JDK installed, define a JAVA_HOME...问题解析处理
- cmake简洁教程 - 第五篇
- Intel Technology Journal
- 面试官问上一家公司离职原因怎么办?
- oracle 数据库 ORA-28000错误的原因及解决办法
- linux命令之------Cat命令
- 设计模式六大原则(SOLID)
- TL民营医院奖金分配方案比较研究
- 图片压缩工具Thumbnailator的使用
- ICP in VTK
- 非常有用的免费UI设计工具和资源