所需jar包
<!--对象,json相互转化-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.6</version>
</dependency>
ListSortUtils
package com.utils;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.Collator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* List按照指定字段排序工具类.
*
* @param <T>
*/
public class ListSortUtils<T> {
/**
* 对List<Obj>里的数字排序.
*
* @param targetList
* 目标排序List
* @param sortField
* 排序字段(实体类属性名)
* @param sortMode
* 排序方式(asc or desc)
*/
public void ListObjSortByNum(List<T> targetList, final String sortField, final String sortMode) {
Collections.sort(targetList, new Comparator<T>() {
public int compare(Object obj1, Object obj2) {
String o1 = getFieldValueByName(sortField, obj1) + "";
String o2 = getFieldValueByName(sortField, obj2) + "";
if (sortMode != null && "desc".equals(sortMode)) {
return ParseUtils.objToBigDecimal(o2).compareTo(ParseUtils.objToBigDecimal(o1)); // 倒序
} else {
return ParseUtils.objToBigDecimal(o1).compareTo(ParseUtils.objToBigDecimal(o2)); // 正序
}
}
});
}
/**
* 对List<Map>里的数字排序.
*
* @param list
* 目标list
* @param key
* 排序字段
* @param sortMode
* 排序方式(asc or desc)
* @throws Exception
* 异常
*/
public static void listMapSortByNum(List<Map<String, Object>> list, final String key, final String sortMode)
throws Exception {
// list是需要排序的list,其内放的是Map
// 返回的结果集
Collections.sort(list, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
// o1,o2是list中的Map,可以在其内取得值,按其排序,此例为升序,s1和s2是排序字段值
BigDecimal s1 = new BigDecimal(o1.get(key) + "");
BigDecimal s2 = new BigDecimal(o2.get(key) + "");
if (sortMode != null && "desc".equals(sortMode)) {
return s2.compareTo(s1);
} else {
return s1.compareTo(s2);
}
}
});
}
/**
* 对List<Obj>中文排序.
*
* @param targetList
* 目标list
* @param sortField
* 排序字段
* @param sortMode
* 排序方式(asc or desc)
*/
public void ListObjSortByChina(List<T> targetList, final String sortField, final String sortMode) {
Collections.sort(targetList, new Comparator<T>() {
public int compare(Object obj1, Object obj2) {
Collator instance = Collator.getInstance(Locale.CHINA);
String o1 = getFieldValueByName(sortField, obj1) + "";
String o2 = getFieldValueByName(sortField, obj2) + "";
if (sortMode != null && "desc".equals(sortMode)) {
// 倒序
return instance.compare(o2, o1);
} else {
return instance.compare(o1, o2);
}
}
});
}
/**
* 根据名称获取值.
*
* @param fieldName
* 名称
* @param o
* 对象
* @return 值
*/
private static Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(o, new Object[] {});
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
转换类ParseUtils
package com.utils;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.util.StringUtils;
import com.alibaba.fastjson.JSON;
/**
* 转换工具类.
*
* Apr 4, 2018 4:39:29 PM
*
*/
public class ParseUtils {
/**
* Object转Long.
*
* @param Object
* Object
* @return Long
*/
public static Long objToLong(Object obj) {
if (obj != null)
return Long.parseLong(obj.toString());
else
return null;
}
/**
* Object转Integer.
*
* @param Object
* Object
* @return Integer
*/
public static Integer objToInteger(Object obj) {
if (obj != null)
return Integer.parseInt(obj.toString());
else
return null;
}
/**
* Object转BigDecimal.
*
* @param Object
* Object
* @return BigDecimal
*/
public static BigDecimal objToBigDecimal(Object obj) {
if (obj != null && !"".equals(obj))
return new BigDecimal(obj.toString());
else
return null;
}
/**
* Object转String.
*
* @param Object
* Object
* @return String
*/
public static String objToString(Object obj) {
if (obj != null)
return obj.toString();
else
return null;
}
/**
* String转Date,返回格式yyyy-MM-dd.
*
* @param String
* String
* @return Date
*/
public static Date strToDate(String dateString) {
if (StringUtils.isEmpty(dateString)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(dateString);
return date;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* Object转Boolean.
*
* @param Object
* Object
* @return Boolean
*/
public static Boolean objToBoolean(Object obj) {
return (Boolean) obj;
}
/**
* json转list.
*
* @param json
* json
* @return list
*/
public static List<Map<String, Object>> jsonToList(String arr) {
List<Map<String, Object>> returnList = new ArrayList<Map<String, Object>>();
com.alibaba.fastjson.JSONArray mainArray = JSON.parseArray(arr);
for (int i = 0; i < mainArray.size(); i++) {
com.alibaba.fastjson.JSONArray paramObject = (com.alibaba.fastjson.JSONArray) mainArray.get(i);
Map<String, Object> map = new HashMap<String, Object>();
for (int j = 0; j < paramObject.size(); j++) {
map.put("" + j, paramObject.get(j));
}
returnList.add(map);
}
return returnList;
}
/**
* 全角转半角.
*
* @param str
* @return
*/
public static final String toSingleByte(String str) {
StringBuffer outStrBuf = new StringBuffer("");
String Tstr = "";
for (int i = 0; i < str.length(); i++) {
Tstr = str.substring(i, i + 1);
// 全角空格转换成半角空格
if (Tstr.equals(" ")) {
outStrBuf.append(" ");
continue;
}
outStrBuf.append(Tstr);
} // end for.
return outStrBuf.toString();
}
}