Sorting a Collection

Problem

You put your data into a collection in random order or used a Properties object that doesn’t preserve the order, and now you want it sorted.

Solution

Use the static method Arrays.sort( ) or Collections.sort( ), optionally providing a Comparator.

Discussion

If your data is in an array, you can sort it using the static sort( ) method of the Arrays utility class. If it is in a collection, you can use the static sort( ) method of the Collections class. Here is a set of strings being sorted, first in an Array and then in a Vector:

public class SortArray {
    public static void main(String[] unused) {
        String[] strings = {
            "painful", 
            "mainly",
            "gaining",
            "raindrops"
        };
        Arrays.sort(strings);
        for (int i=0; i<strings.length; i++)
            System.out.println(strings[i]);
    }
}

public class SortCollection {
    public static void main(String[] unused) {
        Vector v = new Vector(  );
        v.add("painful");
        v.add("mainly");
        v.add("gaining");
        v.add("raindrops");
        
        Collections.sort(v);
        for (int i=0; i<v.size(  ); i++)
            System.out.println(v.elementAt(i));
    }
}

What if the default sort ordering isn’t what you want? Well, there is a Comparator interface, and you can create an object that implements it and pass that as the second argument to sort. Fortunately, for the most common ordering next to the default, you don’t have to; there is a public constant String.CASE_INSENSITIVE_ORDER that can be passed as this second argument. The String class defines it as “a Comparator that orders String objects ...

Get Java Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.