How to sort a list of Strings or Integers in Java
Following on from our introduction to sorting in Java, we
consider here one of the simplest cases of sorting a List of simple objects such
as Strings or Integers. Let's say we have a simple list of Strings:
List<String> words = new ArrayList<String>(50);
Now, we can sort this list with a simple call to the following library method:
The Collections.sort() method will work "out of the can" on lists of various "basic" objects that
you'd expect to be able to sort, including instances of Number– the primitive wrapper
classes Integer, Long, Float etc plus BigInteger and BigDecimal.
Sorting an array
Sorting an array of these objects is just as easy1:
The above method takes an array of objects, but the Arrays class also provides
similar methods for sorting primitive arrays.
Next: other issues
What we've seen above is that sorting simple objects in Java such as numbers or strings is generally dead simple.
But there are a couple more issues to deal with on the following pages:
- What if we want to sort a different type of object, such as one that
we've created? For this, we need to look at how to use the Java Comparable interface.
- What if we want to control the ordering of a specific type of sort,
even if the objects in question are 'naturally sortable'? For example, we might want to perform
a case insensitive sort on Strings, or perform a "proper" alphabetic sort
that takes account of things like the correct ordering of accents in non-English
strings. For this, we need to look at Java Comparators.
- In some cases, we may need to consider the performance of the Java sort algorithm: in particular, where we are repeatedly sorting very small lists,
a simpler (even if less scalable) algorithm may work better.
1. In fact, the Collections.sort() method copies the list into an array and calls
the Arrays.sort() method before copying the elements back into the list.