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