求关于List排序的一个方法!

GUN_JACK 2005-11-19 11:49:36
请教各位高手?
List中add了一些类型相同的POJO类
我想根据POJO类中的一个属性对List进行排序
请问如何才能实现?
...全文
378 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mking2008 2005-11-20
  • 打赏
  • 举报
回复
try{
Collections.sort(mylist, new BB("aa", "aa"));
}catch(ClassCastException e){
e.printStackTrace();
}
inexplicable 2005-11-19
  • 打赏
  • 举报
回复
恩,楼上是提出的是一个好方法,大多数简单对象都能解决了,
但如果你的对象比较复杂,又或者你有多种排序的准则,
只通过POJO implements Comparable可能有点不够灵活。
另一个解决方法是实现一个Comparator, 比如
POJOComparator, 完成compare, equals两个方法。

通过 Collections.sort(List list, Comparator comp);
来实现排序。
kingofhawks 2005-11-19
  • 打赏
  • 举报
回复
Collections.sort(List list)可以排序,不过前提是你的List中的元素必须实现Comparable接口.所以你只要把你的POJO类实现该接口对其中的那个属性进行比较就可以了,如果是简单属性应该是很容易的.
ukulele8656 2005-11-19
  • 打赏
  • 举报
回复
学习
gz
crazycy 2005-11-19
  • 打赏
  • 举报
回复
javadoc中的解释:
ClassCastException - if the list contains elements that are not mutually comparable (for example, strings and integers).

呵呵;
crazycy 2005-11-19
  • 打赏
  • 举报
回复
首先 重写compare 同时也需要重写equals 和 hashcode方法
GUN_JACK 2005-11-19
  • 打赏
  • 举报
回复
错误信息:
java.lang.ClassCastException
at java.util.Arrays.mergeSort(Arrays.java:1152)
at java.util.Arrays.sort(Arrays.java:1079)
at java.util.Collections.sort(Collections.java:113)
at AAA.main(AAA.java:20)
GUN_JACK 2005-11-19
  • 打赏
  • 举报
回复
我试着写了一下:
import java.util.*;
public class AAA
{
public static void main(String[] args)
{ List mylist=new ArrayList();
BB aa=new BB("dd","aa");
mylist.add(aa);
BB bb=new BB("cc","bb");
mylist.add(bb);
BB cc=new BB("bb","cc");
mylist.add(cc);
BB dd=new BB("aa","dd");
mylist.add(dd);
System.out.println(((BB)mylist.get(0)).getAa());
System.out.println(((BB)mylist.get(1)).getAa());
System.out.println(((BB)mylist.get(2)).getAa());
System.out.println(((BB)mylist.get(3)).getAa());
try{
Collections.sort(mylist);
}catch(ClassCastException e){
e.printStackTrace();
}
System.out.println(((BB)mylist.get(0)).getAa());
System.out.println(((BB)mylist.get(1)).getAa());
System.out.println(((BB)mylist.get(2)).getAa());
System.out.println(((BB)mylist.get(3)).getAa());
}
}
class BB implements Comparator
{
private String aa;
private String bb;
public BB(String aa,String bb){
this.aa=aa;
this.bb=bb;
}
public void setAa(String aa){
this.aa=aa;
}
public String getAa(){
return aa;
}
public void setBb(String bb){
this.bb=bb;
}
public String getBb(){
return bb;
}
public int compare(Object element1, Object element2) {
String lower1 =
((BB)element1).getAa().toString().toLowerCase();
String lower2 =
((BB)element2).getAa().toString().toLowerCase();
return lower1.compareTo(lower2);
}
}
到sort的时候报错,不知道是为什么@_@ 请高手指点一下~~~~
yeyu710 2005-11-19
  • 打赏
  • 举报
回复
呵呵,也谢了楼上的两位了,我也知道该怎么给list排序了。(前几天因为需要要给list排序,搞了半天,反而越搞越乱了, 今天看了两楼上的话,明白了!在谢了!)
左大神在这 2005-11-19
  • 打赏
  • 举报
回复
学到很多,楼上各位都是用hibernate开发的吗,顺便问问大家,pojo是不是只有在hibernate中有呢,我会hibernate,希望给于指点

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧