有没有更好的方法来编写这个比较器?我有一个等效的多维数组,其中列是对象
。 99% 的情况下,实际对象是 String
和 BigDecimal
。我正在对给定列索引上的“行”进行排序。
我想避免使用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");
}
}
最佳答案
由于 String
和 BigDecimal
都是 Comparable
:
return ((Comparable)o1).compareTo(o2);
关于多维数组上的java比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539053/