ArrayLIst的排序

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)

Jon*_*eet 5

您有两种选择:

  • 使您的类实现Comparable,并在Collections.sort不指定比较器的情况下调用
  • 正确实施比较器

你似乎采取了"我试过X并且它不起作用的方法,因此我需要尝试别的东西" - 但X(使用比较器)不起作用的原因似乎是你的比较器有错误. ..它没有以你想要的方式比较项目.实施时,你会遇到完全相同的问题Comparable.你还有同样的基本工作做(工作如何比较两个项目) -它真的只是一个事,其中该逻辑去.

通常,实现a Comparator是一种更灵活的方法,因为它允许根据您的需要以不同的方式对集合进行排序.它还允许您对无法在元素类本身中更改代码的集合进行排序.我个人会坚持这种Comparator做法.

编写一些比较各种项目的单元测试,然后实现比较器以便通过这些测试.然后,如果你看到任何更多的问题,添加一个测试这种情况下,使通得过.迭代直到比较器正常工作.