我的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)
数据类似如下:
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)
tablemode只是界面处理,排序应该在数据部分处理的。
我自定义一个ListTableModel
有个private ArrayList rowData是用来存放数据的,然后只要对这个rowData进行排序就可以了。
我试了Arrays.sort(Object[] a)这个方法,现在还没成功,不知道我的方向对不
例如: Object a;
而我是要根据a 的内部数据间的大小进行排序的,当我定义比较器的时候很难下手啊
在 compare ( Object o, Object o1 )方法里利用Java反射reflection来对o和o1进行排序
可以先利用linkedhashmap来保存第一个字段排序的结果,然后再排序每个linkedhashmap里的数据,利用递归来实现,这样不局限于两个字段的排序。
理解嘛?
比较器是比较两个数据的顺序,例如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;
}
}
不知道这样明白不??