Comparator比较器的兑现
Comparator比较器的实现
上面是怎样实现compare函数重写的,尤其没看懂toInt函数,这个函数的作用是什么?大家看看谁懂,讲讲呗,呵呵。
------解决方案--------------------
Comparator返回3种值分别代表>,<,=
然后sort方法需要传入待排序数组,以及可用于该数组的比较器两个参数
toInt函数不就是将中文数字换成阿拉伯数字的字符串么,然后parseint才能转出来,才能计算啊……
------解决方案--------------------
private int toInt(Object o) {
String str = (String) o;
str = str.replaceAll("一", "1");
str = str.replaceAll("二", "2");
str = str.replaceAll("三", "3");
//
return Integer.parseInt(str);
}
replaceAll("一","1");
将你字符串里所有的一 变成 1;
下面的都是如此。
也就是说,你的字符串是"一二三二二三"
经过这个操作之后,就会变成 "123223"
然后再用Integer.parseInt(str); 将字符串"123223" 变成 数字 123223;
import java.util.Arrays;
import java.util.Comparator;
public class SampleComparator implements Comparator {
public int compare(Object o1, Object o2) {
return toInt(o1) - toInt(o2);
}
private int toInt(Object o) {
String str = (String) o;
str = str.replaceAll("一", "1");
str = str.replaceAll("二", "2");
str = str.replaceAll("三", "3");
//
return Integer.parseInt(str);
}
/**
* 测试方法
*/
public static void main(String[] args) {
String[] array = new String[] { "一二", "三", "二" };
Arrays.sort(array, new SampleComparator());
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
上面是怎样实现compare函数重写的,尤其没看懂toInt函数,这个函数的作用是什么?大家看看谁懂,讲讲呗,呵呵。
------解决方案--------------------
Comparator返回3种值分别代表>,<,=
然后sort方法需要传入待排序数组,以及可用于该数组的比较器两个参数
toInt函数不就是将中文数字换成阿拉伯数字的字符串么,然后parseint才能转出来,才能计算啊……
------解决方案--------------------
private int toInt(Object o) {
String str = (String) o;
str = str.replaceAll("一", "1");
str = str.replaceAll("二", "2");
str = str.replaceAll("三", "3");
//
return Integer.parseInt(str);
}
replaceAll("一","1");
将你字符串里所有的一 变成 1;
下面的都是如此。
也就是说,你的字符串是"一二三二二三"
经过这个操作之后,就会变成 "123223"
然后再用Integer.parseInt(str); 将字符串"123223" 变成 数字 123223;