首页 > list根据对象进行排序

list根据对象进行排序

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

package com.hna.hka.mfm.gbs.car.uti;import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;import com.sun.org.apache.xpath.internal.operations.Number;/*** @author jardot* @version 1.0 通用排序*/
public class SortList {@SuppressWarnings({ "unchecked", "rawtypes" })public void Sort(List list, final String method, final String sort) {Collections.sort(list, new Comparator() {@Overridepublic int compare(Object a, Object b) {int ret = 0;try {Method m1 = ((E) a).getClass().getMethod(method, null);Method m2 = ((E) b).getClass().getMethod(method, null);String aValue =  m1.invoke(((E) a), null).toString().trim()!=null?m1.invoke(((E) a), null).toString().trim():"0";String bValue =  m1.invoke(((E) b), null).toString().trim()!=null?m1.invoke(((E) b), null).toString().trim():"0";int aIntValue = (int)(Double.parseDouble(aValue)*100);int bIntValue = (int)(Double.parseDouble(bValue)*100);if (sort != null && "desc".equals(sort)){// 倒序/*ret = m2.invoke(((E) b), null).toString().compareTo(m1.invoke(((E) a), null).toString());*///ret = aInt - bInt;ret =  bIntValue -  aIntValue;}else{// 正序/*ret = m1.invoke(((E) a), null).toString().compareTo(m2.invoke(((E) b), null).toString());*/ret = aIntValue -  bIntValue;;}} catch (NoSuchMethodException ne) {System.out.println(ne);} catch (IllegalAccessException ie) {System.out.println(ie);} catch (InvocationTargetException it) {System.out.println(it);}return ret;}});}
}



转载于:https://my.oschina.net/u/2255569/blog/335353

更多相关:

  • 在使用空时,习惯这么赋值  int *p = NULL;  编译器进行解释程序时,NULL会被直接解释成0,所以这里的参数根本就不是大家所想的NULL,参数已经被编译器偷偷换成了0,0是整数。  因此这面的问题就尴尬了 不好意思图片引用于网络中。 为啥呢不是this is the ptr function…这个。这就是C++中的...

  • var d= {a: 1,b: null,c: 3,d: undefined };Object.keys(d).forEach(k=>d[k]==null&&delete d[k]);//去掉值为null或undefined的对象属性//Object.keys(d).forEach(k=>(d[k]==null||d[k]==='')...

  • //ES6获取浏览器url跟参 public getUrlParam = a => (a = location.search.substr(1).match(new RegExp(`(^|&)${a}=([^&]*)(&|$)`)),a?a[2]:null);...

  • 文章目录1. 解决问题2. 应用场景3. 实现如下C++实现C语言实现4. 缺点 1. 解决问题 在简单工厂模式中,我们使用卖衣服进行举例,同一种工厂可以卖很多不同种类的衣服,工厂只是将衣服的生产过程进行了封装。 当我们增加衣服种类的时候,在简单工厂模式中需要修改工厂的代码,破坏了类的开闭原则(对扩展开发, 对修改关闭),...

  • 在服务端数据库的处理当中,涉及中文字符的结构体字段,需要转为Utf8后再存储到表项中。从数据库中取出包含中文字符的字段后,如果需要保存到char *类型的结构体成员中,需要转为Ansi后再保存。从数据库中取出类型数字的字段后,如果需要保存到int型的结构体成员中,需要调用atoi函数进行处理后再保存。 1 static char *...

  • 文章目录UDP的特点:UDP的用途UDP编程模型UDP通信代码实现 UDP的特点: udp 协议是一种无链接的不可靠传输协议,且UDP每次发送到分组数据大小都是固定的,它的主要特点如下: 不建立连接没有应答机制不会根据网络状况的好坏调整分组数据的大小 UDP之所以为不可靠传输协议,主要还是因为UDP没有链接和应答机制,导致...