先举个例子1253697从大家的认知来看,上面的数字从小到大为1235 679但是如果是一对的字符串或者对象呢?那么就需要Comparator来自定义字符串或对象的比较方法,来排序了。如aa bbcc cc ab如果你在Comparator中自定义c是大于b b是大于a的那么降序排序就是aaabbbcccc对于 publicintcompare(Objectarg0,Objectarg1)的理解如果放回1 说明arg0>arg1 如2 1如果放回0 说明arg0 =arg1 如 cc cc如果放回-1说明arg0 <arg1 如 6 7所以如果你希望1253697的排序变成离5最接近的先输出那么如下代码(降序) public int compare(Object arg0, Object arg1) { Integer cd1 = (Integer)arg0; Integer cd2 = (Integer)arg1; if (Math.abs(5-cd1)-Math.abs(5-cd2)>0) return 1; if (Math.abs(5-cd1)-Math.abs(5-cd2)==0) return 0; if (Math.abs(5-cd1)-Math.abs(5-cd2)<0) return -1; }
阅读全文 >