Java中Arrays.sort()方法的比較器詳解
Arrays.sort()方法的比較器
Arrays.sort()有以下重載(此處只展示兩種):
- Arrays.sort(Object[] a);
- Arrays.sort(T[] a, Comparator<? super T> c);
Arrays.sort(Object[] a)
此方法看似沒有要求我們實現(xiàn)比較器,對于基本數(shù)據(jù)類型,String類型確實如此,因為這些類型中已經(jīng)自帶了compareTo()方法
然而對于我們自定義的類型,則需要讓該類實現(xiàn)Comparable接口,重寫其中的compareTo()函數(shù)
否則雖然編譯時不會報錯,但是在運行時會出現(xiàn)ClassCastException的異常
Arrays.sort(T[] a, Comparator<? super T> c)
此方法的第二個參數(shù)c則明確地要求我們傳入一個實現(xiàn)了java.util.Comparator接口的實例,而Comparator接口中聲明了compare()的抽象方法,所以我們需要重寫compare()方法
可以有以下幾種方法
1、定義一個實現(xiàn)了Comparator接口的類,用該類生成一個實例作為參數(shù)
package com.demo
import java.util.Comparator;
public class LengthOfString implements Comparator<String>{
@Override
public int compare(String first, String second){
return first.length() - second.length();
}
public static void main(String[] args){
String[] ss = {"aa","AAA","a","aaaaaa"};
Arrays.sort(ss,new LengthOfString());
for(String s : ss){
System.out.println(s);
}
}
}2、由于Comparator接口只聲明了一個compare()方法,可以使用匿名內(nèi)部類的方式實現(xiàn)排序
String[] ss = {"aa","AAA","a","aaaaaa"};
Arrays.sort(ss, new Comparator<string>)String[] ss = {"aa","AAA","a","aaaaaa"};
Arrays.sort(ss, new Comparator<string>(){
@Override
public int compare(String first, String second){
return first.length() - second.length();
}
});
for(String s : ss){
System.out.println(s);
}3、使用Lambda表達式
Arrays.sort(ss, (String a,String b)->{
return b.compareTo(a);//String類中定義了compareTO()方法,不需要自己實現(xiàn)
});由于只有一行代碼,故可以省略寫成
Arrays.sort(ss, (String a,String b) -> b.compareTo(a));
到此這篇關于Java中Arrays.sort()方法的比較器詳解的文章就介紹到這了,更多相關Arrays.sort()方法的比較器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談SpringBoot內(nèi)嵌Tomcat的實現(xiàn)原理解析
這篇文章主要介紹了淺談SpringBoot內(nèi)嵌Tomcat的實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
Spring?Native打包本地鏡像的操作方法(無需通過Graal的maven插件buildtools)
這篇文章主要介紹了Spring?Native打包本地鏡像,無需通過Graal的maven插件buildtools,本文探索一下,如果不通過這個插件來生成鏡像,結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-02-02
一文了解SpringBoot是如何連接數(shù)據(jù)庫的
Spring Boot提供了一系列的開箱即用的功能和特性,使得開發(fā)人員可以快速構(gòu)建和部署應用程序,下面這篇文章主要給大家介紹了關于SpringBoot是如何連接數(shù)據(jù)庫的相關資料,需要的朋友可以參考下2023-06-06
Mybatis實現(xiàn)動態(tài)拼接SQL的實踐指南
這篇文章主要為大家詳細介紹了Mybatis實現(xiàn)動態(tài)拼接SQL的相關知識,文中的示例代碼講解詳細, 感興趣的小伙伴可以跟隨小編一起學習一下2025-11-11
java項目打包成可執(zhí)行jar用log4j將日志寫在jar所在目錄操作
這篇文章主要介紹了java項目打包成可執(zhí)行jar用log4j將日志寫在jar所在目錄操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Springboot如何使用filter對request body參數(shù)進行校驗
這篇文章主要介紹了Springboot如何使用filter對request body參數(shù)進行校驗,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java并發(fā)編程:CountDownLatch與CyclicBarrier和Semaphore的實例詳解
這篇文章主要介紹了Java并發(fā)編程:CountDownLatch與CyclicBarrier和Semaphore的實例詳解的相關資料,需要的朋友可以參考下2017-09-09

