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.