1. 程式人生 > >Java_Comparable,Comparator兩接口區別

Java_Comparable,Comparator兩接口區別

想要 對象 div http round 類型 logs 實現類 返回值

Comparable和Comparator的區別

根本區別

  1.Comparable是一個內比較器,Comparator是一個外比較器

    封裝的包不同

      java.util.Comparator

      java.lang.Comparable

    調用方式不同:

      Comparable:實體類實現該接口,一個實體類調用compareTo方法與另一個實體類對象進行比較,obj.compareTo(obj);

      Comparator:調用實現類的compare(obj,obj)方法,進行比較

      Comparable 的方法compareTo(obj)寫在比較的實體類中

      Comparable 的方法compare(obj,obj)可以是一個外部類

拓展區別

  2.Comparable的耦合性要高一些;

    Comparable接口 適合於可以直接進行比較的對象,例如:int,Date

    Comparator接口 適合於不能進行直接比較的對象,即自己編寫比較方法算法

    幾乎所有自己可以和自己比較的對象都實現了Comparable接口

共同點

    兩個接口的方法返回值都是int類型,並且正數大於,負數小於,0為等於

引用:

Comparator

Comparator可以認為是是一個外比較器,個人認為有兩種情況可以使用實現Comparator接口的方式:

1、一個對象不支持自己和自己比較(沒有實現Comparable接口),但是又想對兩個對象進行比較 2、一個對象實現了Comparable接口,但是開發者認為compareTo方法中的比較方式並不是自己想要的那種比較方式 Comparator接口裏面有一個compare方法,方法有兩個參數T o1和T o2,是泛型的表示方式,分別表示待比較的兩個對象,方法返回值和Comparable接口一樣是int,有三種情況: 1、o1大於o2,返回正整數 2、o1等於o2,返回0 3、o1小於o3,返回負整數

Java_Comparable,Comparator兩接口區別