Java Comparator给出要比较的属性的名称

Ran*_*dom 4 java compare

我的问题是这个; 我必须订购一张数据表.表的每一行都是存储在List中的对象(让我们称之为TableObject).每列数据都是类的属性(通常是String).

当用户点击任何列时,我必须进行典型的数据排序.所以我考虑将List更改为TreeSet并在TableObject中实现Comparator.

当我尝试重新排序TreeSet时出现问题.这个比较起初相当容易(为了省略parseInt中的异常):

   public int compare(TableObject to1, TableObject to2){
        TableObject t1 = to1;
        TableObject t2 = to2;

        int result = 1;

        if(Integer.parseInt(t1.getId()) == Integer.parseInt(t2.getId())){result=0;}
        if(Integer.parseInt(t1.getId()) < Integer.parseInt(t2.getId())){result=-1;}

        return result;

    }
Run Code Online (Sandbox Code Playgroud)

但是,当我不得不通过数据文本或TableObject所具有的其他数十个数据重新排序时,我遇到了问题.我不想创建几十个比较函数,每个函数对应一个.我不想使用开关(或ifs链)来决定如何比较对象.

有没有办法以某种方式做到这一点(比如Reflexive),这并不意味着我会写出数百行几乎相同的代码?

谢谢大家!

cam*_*ckr 5

Bean Comparator应该可以工作.