Java基础——Comparable和Comparator的区别
来源:互联网 发布:最安全的国家知乎 编辑:程序博客网 时间:2024/06/05 05:08
Comparable和Comparator的区别
- 包路径不相同:Comparable在java.lang下,Comparator在java.util下
- 包含方法不同:
- Comparable只包含一个方法:
int compareTo(T object)
- Comparator包含两个方法:
int compare(T object1,T object2)
boolean equals(Object obj)
- Comparable只包含一个方法:
- 都可以作用于集合中元素相互之间的比较,但是Comparable使用在集合元素对象内部,Comparator使用在元素对象外部。就Collections.sort()而言,当对类T实现了Comparable接口的时候,sort()方法通过类T中定义的compareTo方法对元素进行比较。如果类T没有实现Comparable方法,可以在调用sort()方法之前生成一个比较器:Comparator,将比较器传递给sort,sort()方法会按照Comparator中定义的compare方法对元素进行比较。
//此处Element实现了Comparable接口public class Element implements Comparable<Element>{ private int number; private String name; public Element(int number,String name) { this.number = number; this.name = name; } public int getNumber(){ return number; } public String getName() { return name; } public int compareTo(Element object) { //return number - object.getNumber(); return this.name.compareTo(object.getName()); } public String toString() { return number + " " + name; }
import java.util.Collections;import java.util.LinkedList;import java.util.List;/** * Created by Administrator on 2017/1/6. */public class Demo { public static void main(String[] args) { List<Element> eOne = new LinkedList<Element>(); eOne.add(new Element(1,"ccc")); eOne.add(new Element(2,"bbb")); eOne.add(new Element(3,"aaa")); Collections.sort(eOne); System.out.println(eOne); }}
//利用Comparator对元素进行比较,当Comparator和Comparable同时被实现时,sort优先选择Comparatorimport java.util.Collections;import java.util.LinkedList;import java.util.List;import java.util.Comparator;public class DemoComparator { public static void main(String[] args) { List<Element> listOne = new LinkedList<>(); listOne.add(new Element(1,"ccc")); listOne.add(new Element(2,"bbb")); listOne.add(new Element(3,"aaa")); Comparator<Element> com = new Comparator<Element>() { public int compare(Element a,Element b){ return a.getName().compareTo(b.getName()); //return a.getNumber()-b.getNumber(); } }; Collections.sort(listOne,com); System.out.println(listOne); }}
0 0
- Java基础——Comparable和Comparator的区别
- java基础--Comparable和Comparator的区别
- java中comparable和 comparator的区别
- java中Comparator 和 Comparable 的区别
- Java中Comparator和Comparable的区别
- java-comparable和comparator的区别
- java中的Comparator和Comparable的区别
- Java中Comparable和Comparator的区别
- JAVA中Comparable和Comparator的区别
- Java 解惑:Comparable 和 Comparator 的区别
- Java 解惑:Comparable 和 Comparator 的区别
- Java 解惑:Comparable 和 Comparator 的区别
- Java 解惑:Comparable 和 Comparator 的区别
- Java中comparable和comparator的区别
- JAVA Comparator和Comparable的区别
- Java comparable和Comparator接口的区别
- Java 解惑:Comparable 和 Comparator 的区别
- java comparable和Comparator 区别
- libjpeg移植到dm368平台
- TortoiseGit 记住用户名和密码的方法
- tomact配置域名和端口直接访问网站
- Aerospike数据库实战(一) -- Aerospike是大数据时代互联网广告专用数据库,为RTB而生
- Android圆形图片控件CircleImageView的使用
- Java基础——Comparable和Comparator的区别
- SpringBoot项目实战--mybatis
- DVWA - XSS (Stored) (low, medium, high)
- IIC总线时序
- quartz原理
- Eclipse下新建JNI工程并在编辑c/c++代码时增加代码提示
- android中的网络请求框架
- 【Unity】场景中有两个摄像机时射线检测不到问题
- ORACLE导入数据库导出数据库