2013-10-15 4 views
7

у меня есть список массива со следующими значениямимассив Список Строка сортировки Метод

ArrayList [Admin,Readonly,CSR,adminuser,user,customer] 

, когда я использовал

Collections.sort(ArrayList) 

я получаю следующий результат

[Admin,CSR,Readonly,adminuser,customer,user] 

согласно в Java-документе приведенные выше результаты верны, но мое ожидание (сортировка независимо от случая (верхний/нижний регистр)

[Admin,adminuser,CSR,customer,Readonly,user] 

предоставляют помощь, как будет делать сортировку независимо от случая, в Java, есть ли другой метод, доступный

Примечание: я буду делать тест Автоматизировать для проверки порядка сортировки в веб-таблице

рассматривает

Prabu

+0

взглянуть на Java [Компаратор] (http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html) –

+0

Вы пробовали это: http://stackoverflow.com/questions/7469643/how-to-sort-alphabetically-while-ignoring-case-sensitive – realUser404

+0

Просто добавьте компаратор в Collections.sort(), который будет игнорировать случай. Вы можете написать свой собственный, но есть один, уже определенный в классе String: String.CASE_INSENSITIVE_ORDER. Таким образом, вы сортируете вызов: «Collections.sort (your_List , String.CASE_INSENSITIVE_ORDER)». Полное решение описано Улагой ниже. – mins

ответ

1
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()); 
+0

Не знаете, почему вы бы сделали компаратор вместо компаратора , когда вы явно указали их сразу после ввода метода. –

0

Ответ прост - большие буквы имеют меньшее число в ASCII. Поэтому сравнение по умолчанию работает нормально.

2

Вы можете сделать это с помощью пользовательского компаратора.

Попробуйте это:

// 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); 
     } 
    }); 

Вам нужно будет пройти Comparator экземпляр в Collections.sort() метод, который сравнивает String объекты без учета регистра.

1
Collections.sort(ArrayList, new Comparator<String>() { 
     @Override 
     public int compare(String s1, String s2) { 
      return s1.toLowerCase().compareTo(s2.toLowerCase()); 
     } 
    }); 
4

Вы можете использовать свой собственный компаратор, как это сортировать независимо от случая (верхний/нижний регистр)

Collections.sort(list, new Comparator<String>() { 
     @Override 
     public int compare(String s1, String s2) 
     {  
      return s1.compareToIgnoreCase(s2); 
     } 
}); 
6

Это будет делать,

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] 
+0

Collections.sort (before_fn, String.CASE_INSENSITIVE_ORDER); \t \t for (String temp: before_fn) { \t \t \t System.out.println ("Ascending Order" + temp); } его работа правильно, дайте мне знать, что Reversse Order для того же
, когда я попробовал Collections.sort (before_fn, Collections.reverseOrder()); его работа i необходима независимо от случая – Prabu

Смежные вопросы