Rav*_*mar 0 java sorting arraylist comparator
如何在不使用比较器的情况下在java中对ArrayList进行排序.
我已经使用过比较器,它对我来说不合适,意味着数据不是特别的方式.
我有一个包含以下属性的数组列表...
getTotal(),
getID(),
getRank(),
getItemName(),
getFinalRank()
Run Code Online (Sandbox Code Playgroud)
我把这一切都塞进了一个arraylist itemWiseDetails
现在我想制作poi报告并显示所有这些细节,但根据该itemName的排名.还有一件事,我的排名是在String中,所以当我尝试根据这个排名进行排序时,它将N/A数据作为0等级,因此它首先显示然后显示第一个排名,然后显示第二个排名然后继续...
所以,我想在没有比较器的情况下对这个itemWiseDetails列表进行排序
提前致谢,
我已经像这样实现了Comparator
public int compareTo(Object itemDetailVO)
{
if (!(itemDetailVOinstanceof ItemDetailVO)) throw new ClassCastException("AItemDetailVOobject expected.");
int otherItemRank = Integer.parseInt(((ItemDetailVO) itemDetailVO).getRank().toString());
return Integer.parseInt(this.trLotRank.toString())- otherBidderRank;
}
Run Code Online (Sandbox Code Playgroud)
您有两种选择:
Comparable,并在Collections.sort不指定比较器的情况下调用你似乎采取了"我试过X并且它不起作用的方法,因此我需要尝试别的东西" - 但X(使用比较器)不起作用的原因似乎是你的比较器有错误. ..它没有以你想要的方式比较项目.实施时,你会遇到完全相同的问题Comparable.你还有同样的基本工作做(工作如何比较两个项目) -它真的只是一个事,其中该逻辑去.
通常,实现a Comparator是一种更灵活的方法,因为它允许根据您的需要以不同的方式对集合进行排序.它还允许您对无法在元素类本身中更改代码的集合进行排序.我个人会坚持这种Comparator做法.
编写一些比较各种项目的单元测试,然后实现比较器以便通过这些测试.然后,如果你看到任何更多的问题,添加一个测试这种情况下,使该通得过.迭代直到比较器正常工作.
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |