我的tabel中有一些数据,通过我自己写的类(一个继承了“AbstractTableModel”的类)中的一个自己写的方法,取得table中的数据。
数据类似如下:
     col1        col2     ...   
    10           b   
    20           aa     
    10           a   
    30           bbb   
    30           aaa   
    20           bb   
  如   
      先排序col1   按   asc   
  有   
     col1       col2     ...   
    10           b   
    10           a   
    20           aa     
    20           bb   
    30           bbb   
    30           aaa   
        再排序col2   按   asc   
    
  结果有   
     col1       col2     ...   
    10           a   
    10           b   
    20           aa     
    20           bb   
    30           aaa   
    30           bbb   
  我用什么类中的什么方法可以实现这个sort功能呢  (我用的是jdk 5.0)

解决方案 »

  1.   

    有点不太明白,你是想在table中显示排序好的数据嘛?还是其它目的?
      

  2.   

    对呀,在tabel中显示排序好的数据。
      

  3.   

    ok,那你是如何处理数据的?
    tablemode只是界面处理,排序应该在数据部分处理的。
      

  4.   

    举个例子:
    我自定义一个ListTableModel
    有个private ArrayList rowData是用来存放数据的,然后只要对这个rowData进行排序就可以了。
      

  5.   

    前台可以不动代码,只要根据情况在SQL语句里拼上条件就可以了。
      

  6.   

    Kengking:我用自己定义的一个方法可以在界面中把数据取出来,数据的存放格式是不定的,它应该是Object类类型的。
    我试了Arrays.sort(Object[] a)这个方法,现在还没成功,不知道我的方向对不
      

  7.   

    nowitzki41:我这个都要在java代码中实现的,没用SQL。要是用SQL语句可能就好做些了
      

  8.   

    我的数据是作为一个整体取出来的,
    例如:   Object a;
     而我是要根据a 的内部数据间的大小进行排序的,当我定义比较器的时候很难下手啊
      

  9.   

    你可以自己写个比较器Comparator
    在 compare ( Object o, Object o1 )方法里利用Java反射reflection来对o和o1进行排序
    可以先利用linkedhashmap来保存第一个字段排序的结果,然后再排序每个linkedhashmap里的数据,利用递归来实现,这样不局限于两个字段的排序。
    理解嘛?
      

  10.   

    没明白,我用Comparable类中的compareTo方法,应该是和你说的Compararor 差不多的吧。比较器里怎么写我就搞不清楚了,我的那个数据是个整体,我怎么写才能让他把 自身的数据间 作相互比较呢
      

  11.   

    我回来了。
    比较器是比较两个数据的顺序,例如compare(Object o,Object o1),在这个方法中可以比较两个对象或者利用反射比较对象中属性的顺序。
    通过这个比较器就可以对某个Colletion进行排序,Collections 有个自定义比较器的sort方法:
    public static <T> void sort(List<T> list, Comparator<? super T> c) 对于你的双字段排序(或者多字段排序),首先定义一个比较器:
    public class SortComparator implements Comparator, Serializable{
        private String property1 = null;//第一个排序属性
        private String property2 = null;//第二个拍寻属性
        private boolean ascend1 = true;//第一个顺序还是倒序
        private boolean ascend2 = true;//第二个顺序还是倒序
        public SortComparator ( String property1, String property2  ) {
            setProperty1( property1 );
            setProperty2( property2 );
        }
        //省略get set方法    //最重要的比较方法,具体代码还是你自己写吧
        public int compare ( Object o, Object o1 ) {
            如果o和o1是同一个对象,直接return 0;
            先比较property1,如果可以区分大小,直接return 大小;
            如果property1相等,再比较property2,如果可以区分大小,直接return 大小;
            如果property2相等,return 0;
        }
    }
    不知道这样明白不??