Java中Comparator升序降序的具體使用
在使用Java自帶的排序函數(shù)時,往往需要根據(jù)自己的需求自定義比較器。以前一直對Comparator的升序降序疑惑。現(xiàn)在記錄一下,加深下印象。
先給結(jié)論:
實現(xiàn)Comparator接口,必須實現(xiàn)下面這個函數(shù):
@Override public int compare(CommentVo o1, CommentVo o2) { return o1.getTime().compareTo(o2.getTime()); }
這里o1表示位于前面的對象,o2表示后面的對象
- 返回-1(或負數(shù)),表示不需要交換01和02的位置,o1排在o2前面,asc
- 返回1(或正數(shù)),表示需要交換01和02的位置,o1排在o2后面,desc
舉例說明:(分析說明在運行結(jié)果之后)
package com.zhb.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class A { int a; public A(int a) { this.a = a; } @Override public String toString() { return "[a=" + a + "]"; } } class MyComparator implements Comparator<A> { @Override public int compare(A o1, A o2) { //升序 //return o1.a - o2.a; //降序:后面會具體分析為什么降序 return o2.a - o1.a; } } public class ComparatorTest { public static void main(String[] args) { A a1 = new A(5); A a2 = new A(7); List<A> list = new ArrayList<A>(); list.add(a1); list.add(a2); Collections.sort(list, new MyComparator()); System.out.println(list); } }
輸出結(jié)果:
下面來用我們之前的結(jié)論解釋為什么return o2.a - o1.a;
就是降序了:
首先o2是第二個元素,o1是第一個元素。無非就以下這些情況:
①: o2.a > o1.a
: 那么此時返回正數(shù),表示需要調(diào)整o1,o2的順序,也就是需要把o2放到o1前面,這不就是降序了么。
②:o2.a < o1.a
: 那么此時返回負數(shù),表示不需要調(diào)整,也就是此時o1 比 o2大, 不還是降序么。
到此這篇關(guān)于Java中Comparator升序降序的具體使用的文章就介紹到這了,更多相關(guān)Java Comparator升序降序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用
這篇文章主要為大家介紹了java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10Java關(guān)鍵字詳解之final static this super的用法
this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細介紹,需要的朋友可以參考下2021-10-10SpringBoot實現(xiàn)密碼安全存儲的五種方式小結(jié)
項目開發(fā)中,密碼安全存儲是非常關(guān)鍵的一環(huán),作為開發(fā)者,我們需要確保用戶的密碼在存儲時被安全地加密,避免因數(shù)據(jù)泄露而造成嚴重后果,所以本文給大家介紹了SpringBoot實現(xiàn)密碼安全存儲的5種方式,需要的朋友可以參考下2025-03-03Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式
這篇文章主要介紹了Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06