日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arrays.sort 不区分大小写 排序

發布時間:2025/6/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arrays.sort 不区分大小写 排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當需要排序的集合或數組不是單純的數字型時,通常可以使用Comparator或Comparable,以簡單的方式實現對象排序或自定義排序。

一、Comparator

強行對某個對象collection進行整體排序的比較函數,可以將Comparator傳遞給Collections.sortArrays.sort

接口方法:

Java代碼
  • /** ?
  • ?*?@return?o1小于、等于或大于o2,分別返回負整數、零或正整數。 ?
  • ?*/??
  • int?compare(Object?o1,?Object?o2);??
  • /*** @return o1小于、等于或大于o2,分別返回負整數、零或正整數。*/int compare(Object o1, Object o2);



    案例:

    Java代碼
  • import?java.util.Arrays; ??
  • import?java.util.Comparator; ??
  • ??
  • public?class?SampleComparator?implements?Comparator?{ ??
  • ??
  • ??public?int?compare(Object?o1,?Object?o2)?{ ??
  • ????return?toInt(o1)?-?toInt(o2); ??
  • ??} ??
  • ??
  • ??private?int?toInt(Object?o)?{ ??
  • ????String?str?=?(String)?o; ??
  • ????str?=?str.replaceAll("一",?"1"); ??
  • ????str?=?str.replaceAll("二",?"2"); ??
  • ????str?=?str.replaceAll("三",?"3"); ??
  • ????//? ??
  • ????return?Integer.parseInt(str); ??
  • ??} ??
  • ??
  • ??/** ?
  • ???*?測試方法 ?
  • ???*/??
  • ??public?static?void?main(String[]?args)?{ ??
  • ????String[]?array?=?new?String[]?{?"一二",?"三",?"二"?}; ??
  • ????Arrays.sort(array,?new?SampleComparator()); ??
  • ????for?(int?i?=?0;?i?<?array.length;?i++)?{ ??
  • ??????System.out.println(array[i]); ??
  • ????} ??
  • ??} ??
  • ??
  • }??
  • import java.util.Arrays; import java.util.Comparator;public class SampleComparator implements Comparator {public int compare(Object o1, Object o2) {return toInt(o1) - toInt(o2);}private int toInt(Object o) {String str = (String) o;str = str.replaceAll("一", "1");str = str.replaceAll("二", "2");str = str.replaceAll("三", "3");// return Integer.parseInt(str);}/*** 測試方法*/public static void main(String[] args) {String[] array = new String[] { "一二", "三", "二" };Arrays.sort(array, new SampleComparator());for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}}


    二、Comparable

    強行對實現它的每個類的對象進行整體排序,實現此接口的對象列表(和數組)可以通過Collections.sortArrays.sort進行自動排序。

    接口方法:

    Java代碼
  • /** ?
  • ?*?@return?該對象小于、等于或大于指定對象o,分別返回負整數、零或正整數。? ?
  • ?*/??
  • int?compareTo(Object?o);??
  • /*** @return 該對象小于、等于或大于指定對象o,分別返回負整數、零或正整數。 */int compareTo(Object o);


    假設對象User,需要按年齡排序:

    Java代碼
  • public?class?User?{ ??
  • ??
  • ??private?String?id; ??
  • ??private?int?age; ??
  • ??
  • ??public?User(String?id,?int?age)?{ ??
  • ????this.id?=?id; ??
  • ????this.age?=?age; ??
  • ??} ??
  • ??
  • ??public?int?getAge()?{ ??
  • ????return?age; ??
  • ??} ??
  • ??
  • ??public?void?setAge(int?age)?{ ??
  • ????this.age?=?age; ??
  • ??} ??
  • ??
  • ??public?String?getId()?{ ??
  • ????return?id; ??
  • ??} ??
  • ??
  • ??public?void?setId(String?id)?{ ??
  • ????this.id?=?id; ??
  • ??} ??
  • ??
  • }??
  • public class User {private String id;private int age;public User(String id, int age) {this.id = id;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}}


    改造后的對象:

    Java代碼
  • import?java.util.Arrays; ??
  • ??
  • public?class?User?implements?Comparable?{ ??
  • ??
  • ??private?String?id; ??
  • ??private?int?age; ??
  • ??
  • ??public?User(String?id,?int?age)?{ ??
  • ????this.id?=?id; ??
  • ????this.age?=?age; ??
  • ??} ??
  • ??
  • ??public?int?getAge()?{ ??
  • ????return?age; ??
  • ??} ??
  • ??
  • ??public?void?setAge(int?age)?{ ??
  • ????this.age?=?age; ??
  • ??} ??
  • ??
  • ??public?String?getId()?{ ??
  • ????return?id; ??
  • ??} ??
  • ??
  • ??public?void?setId(String?id)?{ ??
  • ????this.id?=?id; ??
  • ??} ??
  • ??
  • ??public?int?compareTo(Object?o)?{ ??
  • ????return?this.age?-?((User)?o).getAge(); ??
  • ??} ??
  • ??
  • ??/** ?
  • ???*?測試方法 ?
  • ???*/??
  • ??public?static?void?main(String[]?args)?{ ??
  • ????User[]?users?=?new?User[]?{?new?User("a",?30),?new?User("b",?20)?}; ??
  • ????Arrays.sort(users); ??
  • ????for?(int?i?=?0;?i?<?users.length;?i++)?{ ??
  • ??????User?user?=?users[i]; ??
  • ??????System.out.println(user.getId()?+?"?"?+?user.getAge()); ??
  • ????} ??
  • ??} ??
  • ??
  • }??
  • import java.util.Arrays;public class User implements Comparable {private String id;private int age;public User(String id, int age) {this.id = id;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int compareTo(Object o) {return this.age - ((User) o).getAge();}/*** 測試方法*/public static void main(String[] args) {User[] users = new User[] { new User("a", 30), new User("b", 20) };Arrays.sort(users);for (int i = 0; i < users.length; i++) {User user = users[i];System.out.println(user.getId() + " " + user.getAge());}}}



    三、Comparator和Comparable的區別

    先看一下使用Comparator對User集合實現排序的方式:

    Java代碼
  • import?java.util.Arrays; ??
  • import?java.util.Comparator; ??
  • ??
  • public?class?UserComparator?implements?Comparator?{ ??
  • ??
  • ??public?int?compare(Object?o1,?Object?o2)?{ ??
  • ????return?((User)?o1).getAge()?-?((User)?o2).getAge(); ??
  • ??} ??
  • ??
  • ??/** ?
  • ???*?測試方法 ?
  • ???*/??
  • ??public?static?void?main(String[]?args)?{ ??
  • ????User[]?users?=?new?User[]?{?new?User("a",?30),?new?User("b",?20)?}; ??
  • ????Arrays.sort(users,?new?UserComparator()); ??
  • ????for?(int?i?=?0;?i?<?users.length;?i++)?{ ??
  • ??????User?user?=?users[i]; ??
  • ??????System.out.println(user.getId()?+?"?"?+?user.getAge()); ??
  • ????} ??
  • ??} ??
  • ??
  • }??
  • import java.util.Arrays; import java.util.Comparator;public class UserComparator implements Comparator {public int compare(Object o1, Object o2) {return ((User) o1).getAge() - ((User) o2).getAge();}/*** 測試方法*/public static void main(String[] args) {User[] users = new User[] { new User("a", 30), new User("b", 20) };Arrays.sort(users, new UserComparator());for (int i = 0; i < users.length; i++) {User user = users[i];System.out.println(user.getId() + " " + user.getAge());}}}


    一個類實現了Camparable接口則表明這個類的對象之間是可以相互比較的,這個類對象組成的集合就可以直接使用sort方法排序。
    Comparator可以看成一種算法的實現,將算法和數據分離,Comparator也可以在下面兩種環境下使用:
    1、類的設計師沒有考慮到比較問題而沒有實現Comparable,可以通過Comparator來實現排序而不必改變對象本身
    2、可以使用多種排序標準,比如升序、降序等

    轉載于:https://www.cnblogs.com/cy163/archive/2009/05/05/1450298.html

    總結

    以上是生活随笔為你收集整理的Arrays.sort 不区分大小写 排序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。