我使用以下代码片段按电话号码排序:
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()
但是我有一个例外:
E/AndroidRuntime(12157): java.lang.IllegalArgumentException: 比较方法违反了它的一般约定!
我搜索了一下,发现这意味着我的排序算法不是传递的......
有没有人有更好的按电话号码排序的算法?