摘要:與辨析聲明文章均為本人技術筆記,轉載請注明出處比較三種狀態根據需求定義序升序降序返回負數,表示比較兩元素滿足序,無須調整,返回,表示比較兩元素相等,無須調整位置,返回正數,表示比較兩元素不滿足序,按序調整位置對象內部排序源碼繼承接口的對象必
Comparator與Comparable辨析 聲明
文章均為本人技術筆記,轉載請注明出處:
[1] https://segmentfault.com/u/yzwall
[2] blog.csdn.net/j_dark/
根據需求定義“序”(升序 or 降序);
LESS_THAN: 返回負數,表示比較兩元素滿足序,無須調整,;
EQUAL:返回0,表示比較兩元素“相等”,無須調整位置,;
GREATER_THAN:返回正數,表示比較兩元素不滿足序,按序調整位置;
對象內部排序:Comparable// full name: java.lang.Comparablepublic interface Comparable { public int compareTo(T o); }
繼承Comparable
目前所有的包裝類和String類都實現了Comparable
class Student implements Comparable根據Comparable排序{ private static final int LESS_THAN = -1; private static final int EQUAL = 0; private static final int GREATER_THAN = 1; int age; int id; ... @Override // 按照age升序排練,age相等按照id降序排練 public int compareTo(Student o) { if (this.age < o.age) { return LESS_THAN; } if (this.age == o.age) { return this.id > o.id ? LESS_THAN : (this.id == o.id) ? EQUAL : GREATER_THAN; } else { return GREATER_THAN; } } ... }
集合或數組元素實現Comparable
集合排序:Collections.sort(List
數組排序:Arrays.sort(T[] arr);
public interface ComparatorComparator實現示例{ ... // 重寫compare比較規則,通過外部傳入實現自定義排序 int compare(T o1, T o2); }
/** * 集合排序:Colletions.sort(list, new MyComparator()); * 數組排序:Arrays.sort(arr, new MyComparator()); */ class MyComparator implements Comparator根據Comparator排序{ private static final int LESS_THAN = -1; private static final int EQUAL = 0; private static final int GREATER_THAN = 1; @Override // 按照age降序排練,age相等按照id升序排練 public int compare(Student a, Student b) { if (a.age > b.age) { return LESS_THAN; } if (a.age == b.age) { return a.id < b.id ? LESS_THAN : (a.id == b.id) ? EQUAL : GREATER_THAN; } else { return GREATER_THAN; } } }
Comparator體現了策略設計模式,即不改變對象自身,而使用一個策略對象去改變它的行為。
集合或數組元素實現Comparator
集合排序:Collections.sort(List
數組排序:Arrays.sort(T[] arr, Comparator super T> c);
Comparable
Comparable
Comparator
[1] http://blog.csdn.net/mageshuai/article/details/3849143
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67000.html
摘要:和方法可以對數組進行排序,但是這種方法排序要求對象所在的類必須實現接口,此接口用于指定排序規則如果一個類已經開發完成,但是在此類建立的初期并沒有實現接口,此時肯定是無法進行對象排序操作的,所以為了解決這個問題,定義了另一個比較器的操 Collections.sort() 和 Arrays.sort()方法可以對Object數組進行排序,但是這種方法排序要求對象所在的類必須實現Compa...
摘要:一內部排序接口實現該接口的類,支持自然排序內排序。方法與方法不一致。在有序集合看來和是相等的,因此第個鍵無法被添加到集合中。 一、Comparable(內部排序接口) 實現該接口的類,支持自然排序(內排序)。Arrays.sort(Object[])和Collection.sort(Object[])要求對象必須實現Comparable接口 文檔中指出: 如果該對象大于指定對象,返回...
對象排序 List l可以如下排序。 Collections.sort(l); 如果List包含String元素,它將按字母順序排序,如果它由Date元素組成,它將按時間順序排序,這是怎么發生的?String和Date都實現了Comparable接口,Comparable實現為類提供了自然的順序,允許該類的對象自動排序,下表總結了一些實現Comparable的更重要的Java平臺類。 類 自然...
摘要:中的一切類都是繼承于,在中實現了函數所以,其它所有的類也相當于都實現了該函數。是比較和的大小。返回負數,意味著比小返回零,意味著等于返回正數,意味著大于。 Comparable Comparable 是排序接口。 Collection.sort() 和Arrays.sort()都支持可以排序實現Comparable接口的類的對象的List列表(或數組) 換而言之, 如果數組或列表想支持...
摘要:,又名比較器,是為了比較兩個對象的大小而抽象出的一個接口。在排序的時候常需要實現這個接口來定制比較規則。若函數的返回值大于,那么在排序后會將放在的后面。 Comparator,又名比較器,是為了比較兩個對象的大小而抽象出的一個接口。在排序的時候常需要實現這個接口來定制比較規則。 但是很多人用的時候不清楚該如何使用這個接口,下面我就講一下這個接口的正確使用方法!這個接口里有一個必須實現的...
閱讀 1661·2021-08-13 15:03
閱讀 2091·2019-08-30 15:54
閱讀 3551·2019-08-26 10:30
閱讀 1027·2019-08-26 10:22
閱讀 2753·2019-08-23 14:42
閱讀 1814·2019-08-22 11:16
閱讀 1046·2019-08-21 18:33
閱讀 3170·2019-08-21 17:28