list转map工具类,根据指定的字段分组
import org.apache.log4j.Logger; import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; /**
* list转map工具类,根据指定的字段分组
*
*/
public class EntryUtil { private static Logger logger = Logger.getLogger(EntryUtil.class);
/**
*
* 将list中的元素放到Map<K, List<V>> 以建立 key - List<value> 索引<p>
*
* @param list List<V> 元素列表
* @param keyFieldName String 元素的属性名称, 该属性的值作为索引key
* @param <K> key类型
* @param <V> value类型
* @return Map<K, V> key - value 索引
*
*
*/
public static <K, V> Map<K, List<V>> makeEntityListMap(List<V> list, String keyFieldName) {
Map<K, List<V>> map = new LinkedHashMap<K, List<V>>();
if(list == null || list.size() == 0) {
return map;
}
try {
Method getter = getMethod(list.get(0).getClass(), keyFieldName, "get");
for (V item : list) {
@SuppressWarnings("unchecked")
K key = (K) getter.invoke(item);
List<V> groupList = map.get(key);
if (groupList == null) {
groupList = new ArrayList<V>();
map.put(key, groupList);
}
groupList.add(item);
}
} catch (Exception e) {
logger.error("makeEntityListMap error list is " + list, e);
return map;
}
return map;
} /**
* 获取getter或setter
*/
@SuppressWarnings("unchecked")
private static Method getMethod(@SuppressWarnings("rawtypes") Class clazz, String fieldName,
String methodPrefix) throws NoSuchMethodException {
String first = fieldName.substring(0, 1);
String getterName = methodPrefix + fieldName.replaceFirst(first, first.toUpperCase());
return clazz.getMethod(getterName);
}
}
list转map工具类,根据指定的字段分组的更多相关文章
- Xml格式数据转map工具类
前言[ 最近在写一个业务,由于调UPS物流的接口返回的是一个xml格式的数据结果,我现在要拿到xml中某个节点的值,而这个xml数据是多节点多层级的,并且这某个节点的值有可能只有一条值,有可能有多条, ...
- js 实现 map 工具类
/* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...
- Json格式String类型字符串转为Map工具类
package agriculture_implement.util; import com.google.gson.Gson; import com.google.gson.JsonSyntaxEx ...
- Map转url ,url转Map工具类
/** * 将url参数转换成map * @param param aa=11&bb=22&cc=33 * @return */ public static Map<String ...
- xml和map互转工具类
/** * xml转map工具类 * @author zhangyao * */ public class XmlToMapUtil { /** * xml转map 不带属性 * @param xml ...
- HttpUtil工具类
HttpUtil工具类 /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param params * 请求参数,请求参数应该是name1=val ...
- (11)连个工具类之间的比较4.Collections与Arrays
集合框架中的工具类:特点:该工具类中的方法都是静态的. Collections:常见方法: 1, 对list进行二分查找: 前提该集合一定要有序. int binarySearch(list,key) ...
- java 日期工具类
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
- java工具类
1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...
随机推荐
- 杂项-Company:ShineYoo
ylbtech-杂项-Company:ShineYoo 1. 网站返回顶部 1. 2. 3. 4. 2. 网站测试返回顶部 1. 2. 3.家服宝返回顶部 0.首页 http://www.jiafb. ...
- 78.员工个人信息保镖页面 Extjs 页面
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...
- [SpringMVC]定义多个前缀映射的问题
转自:https://penciltim.iteye.com/blog/501073 我在web.xml里面定义多个dispatch-servlet的前缀映射,像下面这样 <!-- Servle ...
- [Luogu2324]八数码难题
抱歉...我可能真的做搜索上瘾了... 还是IDA*,自己看看就好了... 注意一下搜索顺序 #include<cstdio> #include<queue> #include ...
- AFN上传多张图片
AFN上传多张图片代码: AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager]; sessionManager.r ...
- Android 存储路径选择
Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中. 在Android系统中如何获得存储的路径呢? p ...
- C#自动缩进排列代码的快捷键 c# 代码重新排版 变整齐
C#自动缩进排列代码的快捷键: ctrl + k + d 1.小技巧, 可以把最后一个}去掉, 重新写下,就可以达到排版的效果. 2.快捷键:编辑-高级-设置文档的格式 快捷键Ctrl+E,D,设置 ...
- SQL Server存储过程作业(一)
创建客房类型表RoomType 创建客房状态表RoomState 创建客房信息表Room 创建结账状态表ResideState 创建客人信息表GuestRecord 编写sql语句 USE maste ...
- AI.框架理论.语义网.语言间距.孤单
刷个博客,转载自于科学网:AI.框架理论.语义网.语言间距.孤单 一:引言: AI几乎是计算机科学家的梦想,自动化比计算机发展的要早的多.早期的自动化节省了大量人力,激发了人类懒惰的滋长和对自身进化缓 ...
- 实现Android-JNI本地C++调试
1. 原文链接:NDK单步调试方法 如有问题或者版权要求,请拜访原作者或者通知本人. 最近为了性能需求,开始搞JNI,白手起搞真心不容易.中间差点崩溃了好几次,最终总算得到一点心得. JN ...