摘要:有些類是直接實現了接口的,這個時候如果要改寫排序條件,就直接改寫接口的方法有些類不是用接口,而是用了個類,這時候改寫方法接口只有一個方法具體實踐中一般寫作與某個的比較,比如類比較排序時重寫有些類在構造時可以加參數,比如,默認是從小到大排序
有些類是直接實現了Comparable接口的,這個時候如果要改寫排序條件,就直接改寫Comparable接口的CompareTo方法
有些類不是用Comparable接口,而是用了個Comparator類,這時候改寫Compare方法
Comparable接口:
只有一個方法compareTo(T o). 具體實踐中一般寫作o與某個的比較,比如o.age - this.age.
Comparator類:
1) int compare(T o1, T o2) o1,o2比較(>, < , =)
2) boolean equals(Object obj)
*排序時重寫comparator:
有些類在構造時可以加Comparator參數,比如PriorityQueue,默認是從小到大排序,如果要改寫可以加入一個重寫了compare方法的comparator
Comparator
@Override public int compare(Integer left, Integer right) { return right.compareTo(left);//原本應該是left.compareTo(right) } }; QueueMaxqueue= new PriorityQueue (k, revCmp);
注意這里compareto方法也是Integer類自帶的
記錄一些的改寫Comparator的情況
1) Arrays.sort() 對二維數組
新構建一個comparator重寫compare函數,將比較的內容變成兩個二維數組
arr2D:二維數組
Arrays.sort(arr2D, new Comparator
public int compare(int[] arr1, int[] arr2){ if(arr1[0] == arr2[0]) return arr2[1] - arr1[1]; else return arr1[0] - arr2[0]; } });
2) 對一個類的list進行排序
arrays很容易想到Arrays.sort()的comparator改寫,對于list則注意是Collections.sort()改寫.Collections還包括list, queue, set...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67307.html
摘要:中的一切類都是繼承于,在中實現了函數所以,其它所有的類也相當于都實現了該函數。是比較和的大小。返回負數,意味著比小返回零,意味著等于返回正數,意味著大于。 Comparable Comparable 是排序接口。 Collection.sort() 和Arrays.sort()都支持可以排序實現Comparable接口的類的對象的List列表(或數組) 換而言之, 如果數組或列表想支持...
摘要:例如上一章的蘋果謂詞接口只有一個抽象方法的接口能讓把整個表達式作為函數式接口的實例。這個函數式接口是用來接收一個對象并對其進行處理。 Lambda 管中窺豹 可以把 Lambda 表達式理解為簡潔地可傳遞的匿名函數的一種方式:沒有名稱,有參數列表、函數主體、返回類型和可能的異常。理論上講,匿名函數做不到的事,Lambda 也做不了。后者只是讓前者可讀性更強,寫得更輕松。 回顧上一章最后...
摘要:今天要講的,是我從的源碼實現文件中學到的幾個很基礎,卻又容易被忽略的知識點。在函數式編程中,函數是一等公民,它可以只是根據參數,做簡單的組合操作,再作為別的函數的返回值。所以,閱讀源碼,是一種很棒的重溫基礎知識的方式。 showImg(https://segmentfault.com/img/bVbpTSY?w=750&h=422); 前言 上一篇文章 「前端面試題系列8」數組去重(1...
摘要:若是通過進行排序的話當前集合采用的。最后附上一個標準的使用的方法自然排序是實現接口并且重寫了方法的另一個則是通過并且重寫方法 首先簡單介紹下TreeSet和TreeMap的兩種排序: 自然排序 通過comparator排序 private static void compareWithCpmparator(){ TreeSet treeSet =new TreeSe...
摘要:當函數執行完畢后,局部活動對象就會被銷毀,內存中僅保存全局作用域,但是閉包情況有所不同。閉包與變量副作用閉包只能取得外層函數中任何變量的最后一個值。可以訪問變量,因為這個匿名函數時一個閉包,它能夠訪問包含作用域中的所有變量。 *前言:這次總結閉包,分別參考了《js高級程序設計》、廖雪峰老師的網站、還有《js忍著秘籍》,好了,廢話少說,黑喂狗~~~ -------------------...
閱讀 2236·2021-11-24 11:15
閱讀 3080·2021-11-24 10:46
閱讀 1378·2021-11-24 09:39
閱讀 3924·2021-08-18 10:21
閱讀 1478·2019-08-30 15:53
閱讀 1395·2019-08-30 11:19
閱讀 3321·2019-08-29 18:42
閱讀 2321·2019-08-29 16:58