i have an Array List with Following values
ArrayList [Admin,Readonly,CSR,adminuser,user,customer]
when i used
Collections.s
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());
}
}
then
Collections.sort(ArrayList, new SortIgnoreCase());
You can use your own comparator like this to sort irrespective of case (upper / lower case)
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2)
{
return s1.compareToIgnoreCase(s2);
}
});
Collections.sort(ArrayList, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
Answer is simple - big letters have lower number in ASCII
. So default comparing works fine.
This'll do,
Collections.sort(yourList, String.CASE_INSENSITIVE_ORDER);
this is i have tried,
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);
the following output i got,
[Admin, Readonly, CSR, adminuser, user, customer]
[Admin, adminuser, CSR, customer, Readonly, user]
You can do with custom Comparator.
Try this:
// 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);
}
});
You will need to pass Comparator
instance in Collections.sort()
method which compares String
objects ignoring case.