gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:35 24 4
gpt4 key购买 nike

我的问题是这样的;我必须订购一张数据表。表格的每一行都是一个存储在列表中的对象(我们称之为 TableObject)。每列数据都是类的一个属性(通常是一个字符串)。

当用户点击任何列时,我必须对数据进行典型的排序。所以我考虑将 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;

}

但是当我必须按数据文本或 TableObject 拥有的其他几十个数据重新排序时,我遇到了问题。我不想创建几十个比较函数,每个比较一个。我不喜欢使用开关(或 if 链)来决定如何比较对象。

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

谢谢大家!

最佳答案

Bean Comparator应该可以。

使用 BeanComparator 反射,您可以对具有返回属性值的零参数方法的任何属性进行排序。

所以基本上您可以对任何具有“getter”方法的属性进行排序。

关于Java Comparator 给定要比较的属性的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com