Java字符串排序的幾種實現(xiàn)方式
創(chuàng)建實體類(此處引入了lombok)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Test{
private int Id;
private String TestNo;
}一、使用List集合中自帶的sort方法(字符串的位數(shù)保持一致,不一致的情況可以在左邊補0,也可以使用String.format()方法補全)
1、在對象排序中使用
public static void main(String[] args) {
List<Test> testList= new ArrayList<>();
testList.add(1,"22");
testList.add(2,"11");
testList.add(3,"44");
testList.add(4,"33");
list.sort((a,b)->a.getTestNo().compareTo(b.getTestNo()));
}2、在字符串排序中使用
public static void main(String[] args) {
List<String> testList= new ArrayList<>();
testList.add("22");
testList.add("11");
testList.add("44");
testList.add("33");
list.sort(String::compareTo);
}二、使用Stream流(字符串的位數(shù)保持一致,不一致的情況可以在左邊補0,也可以使用String.format()方法補全)
1、在對象排序中使用
public static void main(String[] args) {
List<Test> testList= new ArrayList<>();
testList.add(1,"22");
testList.add(2,"11");
testList.add(3,"44");
testList.add(4,"33");
List<Test> sortList = testList.stream().sorted(Comparator.comparing(Test::getTestNo).collect(Collectors.toList());
}2、在字符串排序中使用
public static void main(String[] args) {
List<String> testList= new ArrayList<>();
testList.add("22");
testList.add("11");
testList.add("44");
testList.add("33");
List<String> collect = testList.stream().sorted(Comparator.comparing(Objects::toString)).collect(Collectors.toList());
}三、使用基數(shù)排序(此處僅展示對字符串進行排序,不需要補全位數(shù))
class Quick3string{
//三向字符串快速排序
private static int charAt(String s, int d) {
if(d < s.length()) {
return s.charAt(d);
}
return -1;
}
public static void sort(String[] a) {
sort(a, 0, a.length - 1, 0);
}
private static void sort(String[] a, int lo, int hi, int d) {
if(hi <= lo) {
return;
}
int lt = lo, gt = hi, i = lo + 1;
int v = charAt(a[lo], d);
while(i <= gt) {
int t = charAt(a[i], d);
if(t < v) {
exch(a, lt++, i++);
}else if(t > v) {
exch(a, i, gt--);
}else {
i++;
}
}
//a[lo..lt-1] < v = a[lt..gt] < a[gt+1..hi]
sort(a, lo, lt - 1, d);
if(v >= 0) {
sort(a, lt, gt, d + 1);
}
sort(a, gt + 1, hi, d);
}
private static void exch(String[] a, int i, int j) {
String t = new String(a[i]);
a[i] = a[j];
a[j] = t;
}
public static void main(String[] args) {
String[] a = {"48328458C70490693231303331361020", "48326E48E1136A9E3139313131301020", "48326E48E1176F8A3139313131311020", "48326E48E12474713139313131311020"};
Quick3string.sort(a);
System.out.println(Arrays.toString(a));
}
}總結(jié)
到此這篇關(guān)于Java字符串排序的幾種實現(xiàn)方式的文章就介紹到這了,更多相關(guān)Java字符串排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot整合minio實現(xiàn)文件上傳與下載且支持鏈接永久訪問
本文主要介紹了springboot整合minio實現(xiàn)文件上傳與下載且支持鏈接永久訪問,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Spring Cloud Eureka 服務(wù)上下線監(jiān)控的實現(xiàn)
這篇文章主要介紹了Spring Cloud Eureka 服務(wù)上下線監(jiān)控的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
IDEA?2020.3最新永久激活碼(免費激活到?2099?年,親測有效)
分享一下?IntelliJ?IDEA?2020.3.1?最新激活注冊碼,破解教程如下,可免費激活至?2099?年,親測有效,本文給大家分享兩種方法,感興趣的朋友參考下吧2021-01-01
SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能
這篇文章主要介紹了SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
feign調(diào)用跳過HTTPS的SSL證書校驗配置過程
Feign默認驗證SSL證書,若服務(wù)器使用自簽名或內(nèi)部CA證書會導(dǎo)致連接失敗,解決方法是跳過校驗,但僅限測試環(huán)境,生產(chǎn)環(huán)境需嚴格驗證以確保安全2025-07-07
Linux+Docker+SpringBoot+IDEA一鍵自動化部署的詳細步驟
這篇文章主要介紹了Linux+Docker+SpringBoot+IDEA一鍵自動化部署的詳細步驟,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Java經(jīng)緯度小數(shù)與度分秒相互轉(zhuǎn)換工具類示例詳解
這篇文章主要介紹了Java經(jīng)緯度小數(shù)與度分秒相互轉(zhuǎn)換工具類,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07

