自定义比较器
排序算法的应用极其广泛,java的集合类中也提供了排序接口,我们可以直接调用 S o r t ( ) Sort() Sort()函数对数组进行排序。
但是,Sort函数只能处理基本数据类型的排序,而我们在使用Java的时候,大多数情况都是对象数组。
遇到对象数组,我们常常会使用自定义的比较器。
Collections.sort(array,new Comparator<T>(){
@Override
public int compare(T o1,To2){
return 0;
}
});
当然,我们在对基本数据类型数组排序的时候也一般不会用到自定义数组,但是笔者今天在处理排序时得到了一个需求:希望能够对数字的每一位拆开来排序。即不是直接比大小,而是比较每一位上的数字大小。
笔者遇到了这样的问题:
这里有一个需要注意的事情,基本数据类型是无法使用自定义比较器的。本来笔者以为这里只是类型的不同,只需要将
i
n
t
[
]
int[]
int[]换做
A
r
r
a
y
Array
Array就可以了,笔者又错了,哈哈~
终于,笔者发现
L
i
s
t
<
T
>
List<T>
List<T>这里的泛型要求,类似之前笔者犯过的一个错误,这里需要传入对象类型。如果是String数组,就不会产生错误了。于是乎,笔者对此进行了修改~
- 注意,此处将 i n t [ ] int[] int[]换成了 I n t e g e r [ ] Integer[] Integer[],自定义比较器传入参数必须是一个 L i s t < T > List<T> List<T>。
温故知新,未央书斋