Java provides a convenient Collections.sort() method to sort a List of Object’s. The Objects in the list are required to implement the Comparable interface and the compareTo() method is used to compare Objects.
When an alternate sort order is needed you can do that using a Comparator which is passed to the sort() call.
The following example shows how you could sort a list of strings where the string contained a number (that should be sorted numerically) and a string (to be sorted alphabetically).
List<String> list = Arrays.asList(
new String[] { "34 abc", "123 dfd", "34 xyz", "12 xxx" });
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
// separate the number and string
String[] tokens1 = s1.split(" ");
String[] tokens2 = s2.split(" ");
// compare the number from each item
int compare = Integer.parseInt(tokens1[0]) - Integer.parseInt(tokens2[0]);
// If number same compare the string
return compare==0 ? tokens1[1].compareTo(tokens2[1]) : compare;
}
});
written by objects
\\ tags: comparable, comparator, list, sort
Java provides a convenient Arrays.sort() method to sort an array of Object’s. The Objects in the array are required to implement the Comparable interface and the compareTo() method is used to compare Objects.
When an alternate sort order is needed you can do that using a Comparator which is passed to the sort() call.
The following example shows how you could sort an array of strings where the string contained a number (that should be sorted numerically) and a string (to be sorted alphabetically).
String[] array = new String[] { "34 abc", "123 dfd", "34 xyz", "12 xxx" };
Arrays.sort(array, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
// separate the number and string
String[] tokens1 = s1.split(" ");
String[] tokens2 = s2.split(" ");
// compare the number from each item
int compare = Integer.parseInt(tokens1[0]) - Integer.parseInt(tokens2[0]);
// If number same compare the string
return compare==0 ? tokens1[1].compareTo(tokens2[1]) : compare;
}
});
written by objects
\\ tags: array, comparable, comparator, sort
One solution would be to loop through the array maintaining the smallest value found in a variable. Another solution would be to first sort the array, then the smallest value would be the first element.
int[] values = { 2, 67, 15, 3, 567 };
// first approach
int smallest = values[0];
for (int i=1; i<values.length; i++)
{
smallest = Math.min(smallest, values[i]);
}
// second approach
java.util.Arrays.sort(values);
smallest = values[0];
written by objects
\\ tags: array, sort