多维数组上的java比较器

标签 java sorting comparator

有没有更好的方法来编写这个比较器?我有一个等效的多维数组,其中列是对象。 99% 的情况下,实际对象是 StringBigDecimal。我正在对给定列索引上的“行”进行排序。

我想避免使用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");
        }
    }

最佳答案

由于 StringBigDecimal 都是 Comparable:

return ((Comparable)o1).compareTo(o2);

关于多维数组上的java比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539053/

相关文章:

java - linux下java调用C#mono代码

java - 除了按位 AND 之外,还有其他用途吗?

performance - 高效的核外排序

c - 链表上的自下而上归并排序

java - 使用可比较或比较器接口(interface)使用字符串 s1 的顺序对字符串 s2 进行排序

java - 如何在命令模式中实现状态

java - 如何为 ScrollView 设置 OnClickListener?

algorithm - 对部分排序列表进行排序的最佳方法是什么?

Java - 非匿名比较器模拟从集合中选择元素

java - 比较按升序和降序排列使用 2 个属性