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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access