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
Like Adam says, simply do:
Collections.sort(
arrlstContacts,
new Comparator()
{
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.