java数据类型排序_java List Collections.sort 排序 支持 对象属性 普通数据类型 升序 降序 正序 倒序 排列...

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

/*

Collections.sort(list,new ListComparator());

Collections.sort(list,Collections.reverseOrder(new ListComparator()));

*/

public class ListComparator implements Comparator {

public ListComparator() {

}

public ListComparator(String fieldName) {

this.fieldName = fieldName;

}

//空:普通的数据类型 非空:对象数据类型 取methodName返回值比较

String fieldName;

public Object getValue(Object bean) throws Exception {

try {

Field field = bean.getClass().getDeclaredField(fieldName);

return field.get(bean);

} catch (Exception ex) {

ex.printStackTrace();

}

return null;

}

public int compare(Object obj1, Object obj2) {

int val = -1;

try {

if (fieldName == null) {

val = _compare(obj1, obj2);

} else {

val = _compare(getValue(obj1), getValue(obj2));

}

} catch (Exception ex) {

ex.printStackTrace();

}

return val;

}

public int _compare(Object obj1, Object obj2) throws Exception {

if (obj1 == null || obj2 == null) return obj1 == null ? -1 : 1;

Class cl = obj1.getClass();

if (obj1 instanceof java.lang.Comparable) {

//byte int long float..number, date , boolean , char

Method getMethod = obj1.getClass().getMethod("compareTo", new Class[]{cl});

return (Integer) getMethod.invoke(obj1, new Object[]{obj2});

}

return -1;

}

public static void main(String[] arge) {

//

List list = new ArrayList();

list.add(new Test(1));

list.add(new Test(2));

list.add(new Test(3));

list.add(new Test(4));

Collections.sort(list, Collections.reverseOrder(new ListComparator("id")));

System.out.println(list);

Collections.sort(list, new ListComparator("id"));

System.out.println(list);

list = new ArrayList();

list.add(1);

list.add(2);

list.add(3);

list.add(4);

Collections.sort(list, Collections.reverseOrder(new ListComparator()));

System.out.println(list);

Collections.sort(list, new ListComparator());

System.out.println(list);

}

}

class Test {

public Test(int id){

this.id = id;

}

public int id;

public String toString(){

return String.valueOf(id);

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-06-09 22:37

浏览 5542

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值