有没有更好的方法来编写这个比较器?我有一个等值的多维数组,其中列是Object
's。 99%的实际对象是String
和BigDecimal
。我在给定的列索引上排序“行”。多维阵列上的java比较器
我想避免instanceof。
protected static class MyComparator implements Comparator<DataRow> {
private int idx;
public MyComparator(int idx) {
this.idx = idx;
}
@Override
public int compare(DataRow r1, DataRow r2) {
Object o1 = r1.getColumns()[idx];
Object o2 = r2.getColumns()[idx];
if (o1 instanceof String){
return ((String)o1).compareTo((String)o2);
}else if (o1 instanceof BigDecimal){
return ((BigDecimal)o1).compareTo((BigDecimal)o2);
}else{
throw new UnsupportedOperationException("comparison cannot be performed");
}
}
我将不得不通过许多测试来运行我的应用程序,以查看数据是否兼容。到目前为止,单元测试使用这种方法保持稳定:))我扔了一个Integer,并且工作得很好。 – Elijah 2011-12-16 20:09:48