我的问题是这样的;我必须订购一个数据表。表的每一行都是一个存储在 List 中的对象(我们称之为 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 链)来决定如何比较对象。
有没有办法以某种方式做到这一点(例如反射),这并不意味着我会编写数百行几乎相同的代码?
感谢大家!
Bean比较器应该管用。
使用反射BeanComparator
这将允许您对具有返回属性值的零参数方法的任何属性进行排序。
所以基本上你可以对任何具有“getter”方法的属性进行排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)