请教各位高手?
List中add了一些类型相同的POJO类
我想根据POJO类中的一个属性对List进行排序
请问如何才能实现?

解决方案 »

  1.   

    Collections.sort(List list)可以排序,不过前提是你的List中的元素必须实现Comparable接口.所以你只要把你的POJO类实现该接口对其中的那个属性进行比较就可以了,如果是简单属性应该是很容易的.
      

  2.   

    恩,楼上是提出的是一个好方法,大多数简单对象都能解决了,
    但如果你的对象比较复杂,又或者你有多种排序的准则,
    只通过POJO implements Comparable可能有点不够灵活。
    另一个解决方法是实现一个Comparator, 比如
    POJOComparator, 完成compare, equals两个方法。通过 Collections.sort(List list, Comparator comp);
    来实现排序。
      

  3.   

    学到很多,楼上各位都是用hibernate开发的吗,顺便问问大家,pojo是不是只有在hibernate中有呢,我会hibernate,希望给于指点
      

  4.   

    呵呵,也谢了楼上的两位了,我也知道该怎么给list排序了。(前几天因为需要要给list排序,搞了半天,反而越搞越乱了, 今天看了两楼上的话,明白了!在谢了!)
      

  5.   

    我试着写了一下:
    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的时候报错,不知道是为什么@_@ 请高手指点一下~~~~
      

  6.   

    错误信息:
    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)
      

  7.   

    首先 重写compare 同时也需要重写equals 和 hashcode方法
      

  8.   

    javadoc中的解释:
    ClassCastException - if the list contains elements that are not mutually comparable (for example, strings and integers). 呵呵;
      

  9.   

    try{
    Collections.sort(mylist, new BB("aa", "aa"));
    }catch(ClassCastException e){
    e.printStackTrace();
    }