Sorting arraylist in alphabetical order (case insensitive)

andro-girl picture andro-girl · Apr 28, 2011 · Viewed 238.5k times · Source

I have a string arraylist names which contains names of people. I want to sort the arraylist in alphabetical order.

ArrayList<String> names = new ArrayList<String>();
names.add("seetha");
names.add("sudhin");
names.add("Swetha");
names.add("Neethu");
names.add("ananya");
names.add("Athira");
names.add("bala");
names.add("Tony");
names.add("Karthika");
names.add("Nithin");
names.add("Vinod");
names.add("jeena");
Collections.sort(names);
for(int i=0; i<names.size(); i++)
    System.out.println(names.get(i));

I tried to sort the list in above way. But it is displaying the sorted array as:

Athira
Karthika
..
..
ananya
bala
...

but I don't want to make it case sensitive. I want the result as:

ananya
Athira
bala

Answer

denis.solonenko picture denis.solonenko · Apr 28, 2011

Custom Comparator should help

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

Or if you are using Java 8:

list.sort(String::compareToIgnoreCase);