java map属性_java对对象或者map的属性进行排序

packagecom.xkj.spider.mpb.util;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Map;importjava.util.TreeMap;importlombok.extern.slf4j.Slf4j;/*** 对属性进行排序得一个排序后的属性字符串

*@authoryangzl

* @data 2019年4月4日

**/@Slf4jpublic classSortPropertiesUtils {public static final String PARAM_EQUAL = "=";public static final String PARAM_AND = "&";privateSortPropertiesUtils() {}/*** 对Object进行List转换后按key进行升序排序,以key=value&...形式返回

*

*@paramlist

*@return

*/

public staticString sort(Object order) {

Map map =bean2Parameters(order);returnsort(map);

}/*** 对对Object转换后, 以key=value&...形式返回按key进行升序排序,以key=value&...形式返回

*

*@paramorder

*@return

*/

public static String sort(Maporder) {if (null == order ||order.isEmpty()) {return null;

}

Map parameters = new TreeMap<>((obj1, obj2) ->obj1.compareToIgnoreCase(obj2));

parameters.putAll(order);

StringBuilder sb= newStringBuilder();for (Map.Entryentry : parameters.entrySet()) {if (null !=entry.getValue()) {

sb.append(entry.getKey());

sb.append(PARAM_EQUAL);

sb.append(entry.getValue().toString());

sb.append(PARAM_AND);

}

}

String params=sb.toString();if(sb.toString().endsWith(PARAM_AND)) {

params= sb.substring(0, sb.length() - 1);

}returnparams;

}/*** 将bean转换成键值对列表

*

*@parambean

*@return

*/

private static Mapbean2Parameters(Object bean) {if (bean == null) {return null;

}

Map parameters = new HashMap<>();if (null !=parameters) {//取得bean所有public 方法

Method[] Methods =bean.getClass().getMethods();for(Method method : Methods) {if (method != null && method.getName().startsWith("get") && !method.getName().startsWith("getClass")) {//得到属性的类名

Object value = null;//得到属性值

try{

value=method.invoke(bean);if (null !=value) {//添加参数//将方法名称转化为id,去除get,将方法首字母改为小写

String param = method.getName().replaceFirst("get", "");if (param.length() > 0) {

String first= String.valueOf(param.charAt(0)).toLowerCase();

param= first + param.substring(1);

}

parameters.put(param, value);

}

}catch(Exception e) {

log.error("", e.getMessage(), e);

}

}

}

}returnparameters;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值