[英]Array List of String Sorting Method
我有一個具有以下值的數組列表
ArrayList [Admin,Readonly,CSR,adminuser,user,customer]
當我用的時候
Collections.sort(ArrayList)
我得到了以下結果
[Admin,CSR,Readonly,adminuser,customer,user]
根據Java文檔,上面的結果是正確的,但我的期望是(排序與案例無關(大/小寫)
[Admin,adminuser,CSR,customer,Readonly,user]
提供幫助如何進行排序,無論java中的情況如何,是否有任何其他方法可用
注意:我將進行自動測試以檢查Web表中的排序順序
問候
prabu
這樣做,
Collections.sort(yourList, String.CASE_INSENSITIVE_ORDER);
這是我試過的,
ArrayList<String> myList=new ArrayList<String>();
Collections.addAll(myList,"Admin","Readonly","CSR","adminuser","user","customer");
System.out.println(myList);
Collections.sort(myList, String.CASE_INSENSITIVE_ORDER);
System.out.println(myList);
我得到以下輸出,
[Admin, Readonly, CSR, adminuser, user, customer]
[Admin, adminuser, CSR, customer, Readonly, user]
您可以像這樣使用自己的比較器進行排序,無論大小寫(大小寫)
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2)
{
return s1.compareToIgnoreCase(s2);
}
});
您可以使用自定義Comparator。
嘗試這個:
// list containing String objects
List<String> list = new ArrayList<>();
// call sort() with list and Comparator which
// compares String objects ignoring case
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
});
您需要在Collections.sort()
方法中傳遞Comparator
實例,該方法比較忽略大小寫的String
對象。
public class SortIgnoreCase implements Comparator<Object> {
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
String s2 = (String) o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
}
然后
Collections.sort(ArrayList, new SortIgnoreCase());
Collections.sort(ArrayList, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
答案很簡單 - 大字母的ASCII
數字較低。 所以默認比較工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.