我是个java初学者,在教材中看到一个忽略字符串大小写排序的例子,如下:
package com.wsy;
import java.util.Arrays;
import java.util.Comparator;
class SingleCompare implements Comparator{
public int compare(Object o1,Object o2){
String s1=(String)o1;
String s2=(String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
}
public class SortArray2 {
public static void main(String args[]){
String[] sa=new String[]{"b","C","a","234"};
Arrays.sort(sa, new SingleCompare());
System.out.println(Arrays.asList(sa));
}
}
我对其中Arrays.sort(sa, new SingleCompare())感到很困惑,第二个参数new SingleCompare()是如何使接口Comparator对排序产生作用的?方法compare在这里的用途是什么?
package com.wsy;
import java.util.Arrays;
import java.util.Comparator;
class SingleCompare implements Comparator{
public int compare(Object o1,Object o2){
String s1=(String)o1;
String s2=(String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
}
public class SortArray2 {
public static void main(String args[]){
String[] sa=new String[]{"b","C","a","234"};
Arrays.sort(sa, new SingleCompare());
System.out.println(Arrays.asList(sa));
}
}
我对其中Arrays.sort(sa, new SingleCompare())感到很困惑,第二个参数new SingleCompare()是如何使接口Comparator对排序产生作用的?方法compare在这里的用途是什么?
楼主【insect_fly】截止到2008-07-26 15:39:11的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
Arrays.sort()方法其实在使用的时候是自动调用了compare()这个方法,为了忽略大小写,所以重写了compare。
就这样实现了忽略大小写来排序了。
基本意思我了解了
就是Arrays.sort(T[] a, Comparator<? super T> c)的执行需要调用public int compare()函数。