现在,我在比较器上编写了对整数和字符串数组进行排序的文章。从代码中可以看出,如果两个类不相同,则 String 类取大于值。但是,这只允许两个类。如果我想在我的数组中添加另一种原始类型,例如 Float,该怎么办?我必须在 if-else 语句中添加更多代码。有没有一种方法可以实现比较,而无需为我要比较的每个附加类添加语句?
import java.util.Arrays;
import java.util.Comparator;
public class SampleComparator implements Comparator<Object> {
public static void main(String[] args) {
Object[] inputData = { new String("pizza"), new Integer(0),
new String("apples"), new Integer(5), new String("pizza"),
new Integer(3), new Integer(7), new Integer(5) };
Arrays.sort(inputData, new SampleComparator());
System.out.println(Arrays.asList(inputData));
}
public int compare(Object o1, Object o2) {
if (o1.getClass().equals(o2.getClass())) {
return ((Comparable)o1).compareTo((Comparable)o2);
} else {
if(o1.getClass().getCanonicalName().equals("java.lang.String")){
return 1;
} else {
return -1;
}
}
}
}
输出:
[0, 3, 5, 5, 7, apples, pizza, pizza]