[java] List 列表按对象的类别属性进行再封装,封装为一个Map<Object,list<Object>> 使用反射完成

定义根据属性类别封装放的方法:

    /**
     * @Description: 根据类别封装配置的方法
     * @Author: mc 2023/5/31 18:52
     */
    public <T> Map<Object, List<T>> groupListByProperty(List<T> list, String propertyName) {
        Map<Object, List<T>> map = new HashMap<>();
        if (list != null && !list.isEmpty()) {
            for (T t : list) {
                try {
                    // 通过反射获取属性值
                    Field field = t.getClass().getDeclaredField(propertyName);
                    field.setAccessible(true);
                    Object value = field.get(t);

                    // 将对象加入到相应的列表中,并添加到map中
                    List<T> subList = map.computeIfAbsent(value, k -> new ArrayList<>());
                    subList.add(t);
                } catch (NoSuchFieldException | IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
        return map;
    }

方法调用:传入计划重装的集合以及类别属性即可

// 方法调用
Map<Object,List<Object>> map = new HashMap<>();

map = groupListByProperty(list, "type");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值