Comparable與Comparator的區別
Java的Comparator和Comparable當需要排序的集合或陣列不是單純的數字型時,通常可以使用Comparator或Comparable,以簡單的方式實現物件排序或自定義排序。
一、Comparator 強行對某個物件collection進行整體排序的比較函式,可以將Comparator傳遞給Collections.sort或Arrays.sort。
介面方法:
1 int compare(T o1, T o2);
案例實現:
1 import java.util.Comparator; 2 import java.util.HashMap;3 4 public class Pair implements Comparator<String> { 5 6 HashMap<String, Integer> base_map; 7 8 public Pair(HashMap<String, Integer> base_map) { 9 this.base_map = base_map; 10 } 11 @Override 12 public int compare(String arg0, String arg1) {13 if (!base_map.containsKey(arg0) || !base_map.containsKey(arg1)) { 14 return 0; 15 } 16 if (base_map.get(arg0) < base_map.get(arg1)) { 17 return 1; 18 } else if (base_map.get(arg0) == base_map.get(arg1)) { 19 return 0;20 } else { 21 return -1; 22 } 23 } 24 25 26 }
二、Comparable
強行對實現它的每個類的物件進行整體排序,實現此介面的物件列表(和陣列)可以通過Collections.sort或Arrays.sort進行自動排序。
介面方法:
1 public int compareTo(T o);
案例程式碼比較年齡:
1 class TestAge implements Comparable<Object>{ 2 3 private int age; 4 5 public TestAge(int age){ 6 this.age=age; 7 } 8 @Override 9 public int compareTo(Object o) { 10 return this.age -((TestAge)o).age ; 11 } 12 13 }
三、Comparator和Comparable的區別
一個類實現了Camparable介面則表明這個類的物件之間是可以相互比較的,這個類物件組成的集合就可以直接使用sort方法排序。
Comparator可以看成一種演算法的實現,將演算法和資料分離,Comparator也可以在下面兩種環境下使用:
1、類的設計師沒有考慮到比較問題而沒有實現Comparable,可以通過Comparator來實現排序而不必改變物件本身
2、可以使用多種排序標準,比如升序、降序等
相關推薦
java Comparable與Comparator介面的區別
public class MyTest { public static strictfp void main(String[] args) { String[] arr = {"bbbb","aaa","cc"}; /* * 利用String預設
淺談Comparable與Comparator的區別
package com.list.customsort; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import ja
Comparable與Comparator的區別
Java的Comparator和Comparable當需要排序的集合或陣列不是單純的數字型時,通常可以使用Comparator或Comparable,以簡單的方式實現物件排序或自定義排序。 一、Comparator 強行對某個物件collection進行整體排序的比較函式,可以將Compara
Comparable與Comparator源碼分析
doc 同時 inf 兩個 span ase err 需要 ren package java.lang; import java.util.*; /** * This interface imposes a total ordering on the objects
似懂非懂的Comparable與Comparator
pan sort 編譯 pre pos family 應該 可能 ret jdk1.8.0_41 一知半解寫代碼, 集合排序用個啥。 抄起鍵盤胡亂打, 似懂非懂最可怕。 Comparable與Comparator都是用於集合的排序,對於大多數人來說Compa
Java中Comparable和Comparator區別小結
回到頂部一、Comparable簡介 Comparable是排序介面。若一個類實現了Comparable介面,就意味著該類支援排序。實現了Comparable介面的類的物件的列表或陣列可以通過Collections.sort或Arrays.sort進行自動排序。 此外,實現此介面的物件可以用作有序對映
Java中常用的比較器Comparable與Comparator
在公司實習了一段時間發現自己有些基礎知識理解的不是很清楚,今天把比較器的部分簡單總結一下! 有不對的歡迎指正! 需要為多個物件排序時必須設定規定的排序規則,排序規則可以通過比較器進行設定。Java提供兩種比較常用的比較器:Comparable和Compara
Comparable與Comparator淺析
今天博主在翻閱TreeMap的原始碼,發現其鍵必須是實現Comparable或者Comparator的介面時產生了一些興趣,比如在TreeMap中的put方法分別對Comparable和Comparator介面分別進行處理。那麼疑問就來了,Comparabl
Comparable與Comparator的升序與降序
Comparable介面 public interface Comparable<T> { int compareTo(T other); } 當呼叫x.compareTo(y)時,根據返回的整數值來確定x與y的位置,當返回值為正整數時,x在y後面。可
Comparable 與 Comparator 兩個介面的作用
在我的印象裡,對於陣列排序,最簡單的方法就是使用Arrays.sort(陣列a);它也使我理所應當的認為:Arrays這個類完全實現這個sort的方法,而實際上並非如此,先看下sort的原型:public static <T extends Comparable<
Comparable、Comparator區別、Comparator升序降序實現
Comparable與Comparator的區別 可參考: http://blog.csdn.net/mageshuai/article/details/3849143 總結: 1) 用 Comparator 是策略模式(strategy design
Comparable和Comparator的區別 :Java 類的比較
size 兩種 邏輯 簡單 用戶 代碼 比較 nts 定義 Comparable: 用於類內部的比較, ex: public class Persion implements Comparable {..比較Person的大小..},person現在是可以比較大小的
【Java】Comparable和Comparator接口的區別
包含 第一個 入參 pareto blog 等於 compare 排序。 tor Java提供了只包含一個compareTo()方法的Comparable接口。這個方法可以個給兩個對象排序。具體來說,它返回負數,0,正數來表明已經存在的對象小於,等於,大於輸入對象。
java Comparable 和 Comparator接口區別
什麽 eset int origin image clas 新建 rate http Comparable 簡介 Comparable 是排序接口。 若一個類實現了Comparable接口,就意味著“該類支持排序”。 即然實現Comparable接口的類支持排序,假設現在
Java原始碼系列(1):Comparable和Comparator的區別
在將Comparable和Comparator區別之前,先補充一個知識點。 先看程式碼: public class Person<T> { private T id; public T getId() { retur
Java - comparable和comparator的區別和用法
最近遇到一個問題、需要對List中的物件進行排序。無腦寫程式碼的解決方案是:取出來排序。當然這不符合我們程式設計師的追求。 Java中有兩個介面專門用於排序、比較。它們就是comparable和comparator。也有人稱之為內部比較器和外部比較器。 內部比較器 comparable:它重
Comparable和Comparator的區別
概要: Comparable和Comparator都是用於比較資料的大小的,實現Comparable介面需要重寫compareTo方法,實現Comparator介面需要重寫compare方法,這兩個方法的返回值都是int,用int型別的值來確定比較結果,在Collections工具類中有一個排序方法sor
Java中類的比較與排序方法(應用Comparable介面與Comparator介面)
引言 在平時寫Java的程式的時候,如果要進行一些基本型別的變數的比較,可以很方便得呼叫’Math.max()’、Math.min()等方法,如果要對陣列或者列表進行排序,也可以用Arrays.sort()和Collections.sort()等已經封裝好的方法來進行。但是,如果是一個自
Comparable和Comparator原始碼分析與對比
Comparable使用 Comparable只是一個簡單的介面, public interface Comparable<T> { public int compareTo(T o); } 使用如下: public class Person imp
比較器Comparator 和 Comparable的簡單區別
1,簡介 最近在刷題的時候需要用到對自定義的類進行排序,於是想到了實現比較器介面,發現有comparator和conparable兩個比較器介面,具體分析一下兩者的區別。 例如現在