I used the following code snippet to sort by phone number:
class Item { String addr; /* phone number */ }
private int compareByAddr(Item objA, Item objB) {
if (objA.addr==null && objB.addr==null) {
return 0;
} else if (objA.addr==null && objB.addr!=null) {
return -1;
} else if (objA.addr!=null && objB.addr==null) {
return 1;
} else {
if (PhoneNumberUtils.compare(objA.addr, objB.addr)) {
return 0;
} // end if
return objA.addr.compareTo(objB.addr);
} // end if
} // end compareByAddr()
However I got an Exception:
E/AndroidRuntime(12157): java.lang.IllegalArgumentException: Comparison method violates its general contract!
I've searched about it, and found out that it means my sorting algorithm is not transitive...
Does anyone has a better algorithm for sorting by phone number?