生活随笔
收集整理的這篇文章主要介紹了
Arrays.sort 不区分大小写 排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當需要排序的集合或數組不是單純的數字型時,通常可以使用Comparator或Comparable,以簡單的方式實現對象排序或自定義排序。
一、Comparator
強行對某個對象collection進行整體排序的比較函數,可以將Comparator傳遞給Collections.sort或Arrays.sort。
接口方法:
Java代碼
????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.sort或Arrays.sort進行自動排序。
接口方法:
Java代碼
????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 不区分大小写 排序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。