有沒有更好的方法來編寫這個比較器?我有一個等值的多維數組,其中列是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