java多属性的map,通用List转map,支持任意属性与多属性分组

例如根据 名字和年龄还有班级 三个属性相同的分为一组 ,只需要在参数中输入对应的三个属性名即可

/**

*

根据多属性进行list转map分组

* 可以自行修改,稍稍修改就可以达到集合里指定属性去重的效果

*

* @param list 要转换的集合

* @param strings 转换后Map的key值,例如根据name属性分组,这里就填写name

* 如果是要求name和age属性都相同的分为一组,这里就填name,age,更多属性同理

* key值默认为属性名的字符串连接,如果要指定的key名修改代码的20行和22行即可

* @param 集合里对象的泛型,Matrix

* @return 根据属性分好组的Map

*/

public static Map> listToMap(List list, String... strings) {

Map> returnMap = new HashMap<>();

try {

for (T t : list) {

StringBuffer stringBuffer = new StringBuffer();

for (String s : strings) {

Field name1 = t.getClass().getDeclaredField(s);//通过反射获得私有属性

name1.setAccessible(true);

String key = name1.get(t).toString();//获得key值

stringBuffer.append(key);

}

String KeyName = stringBuffer.toString();

List tempList = returnMap.get(KeyName);

if (tempList == null) {

tempList = new ArrayList<>();

tempList.add(t);

returnMap.put(KeyName, tempList);

} else {

tempList.add(t);

}

}

} catch (NoSuchFieldException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

return returnMap;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值