Sorting custom class array-list string using Collections.sort
android, arraylist, collections, java, sorting
Solution
Like Adam says, simply do:
Collections.sort(
arrlstContacts,
new Comparator<Contacts>()
{
public int compare(Contacts lhs, Contacts rhs)
{
return lhs.Name.compareTo(rhs.Name);
}
}
);
The method `String.compareTo` performs a lexicographical comparison which your original code is negating. For example the strings `number1` and `number123` when compared would produce -2 and 2 respectively.
By simply returning 1, 0 or -1 there's a chance (as is happening for you) that the merge part of the merge sort used `Collections.sort` method is unable to differentiate sufficiently between the strings in the list resulting in a list that isn't alphabetically sorted.
Problem
I am trying to sort my custom class array-list using Collections.sort by declaring my own anonymous comparator. But the sort is not working as expected. My code is ``` Collections.sort(arrlstContacts, new Comparator<Contacts>() { public int compare(Contacts lhs, Contacts rhs) { int result = lhs.Name.compareTo(rhs.Name); if(result > 0) { return 1; } else if (result < 0) { return -1; } else { return 0; } } }); ``` The result is not in sorted order.