【Java代码小技巧】

该文展示了如何在Java中处理两个Map对象,当它们的键相同但值不同时,将它们合并到一个新的Map中,其中值为List。同时,文章还介绍了如何通过反射使用BeanUtils工具类来复制具有相同属性名的两个对象之间的属性。
摘要由CSDN通过智能技术生成

Java代码小操作

1、 两个Map对象中 k一样,v不同,分别作为一个Map的k,v值

		 Map<String,String> longMap = new HashMap<>();
        // 用户:角色
        longMap.put("管理员","张三");
        longMap.put("负责人","张三");
        longMap.put("经办人","王五");
        longMap.put("申请人","王五");
        longMap.put("执行人","老六");
        Map<String,Object> map = new HashMap<>();
        map.put("管理员",new Role(666,"测试002","2023-02-01","2023-02-02",0));
        map.put("负责人",new Role(123,"测试001","2023-02-01","2023-02-02",0));
        map.put("经办人",new Role(321,"测试002","2023-02-01","2023-02-02",0));
        map.put("申请人",new Role(213,"测试001","2023-02-01","2023-02-02",0));
        map.put("执行人",new Role(312,"测试002","2023-02-01","2023-02-02",0));

        Map<String, List<Role>> mapList = new HashMap<>();

        for (Map.Entry<String,String> lm:longMap.entrySet()){
            for (Map.Entry<String,Object> m:map.entrySet()) {
                // 比较两个map中是否有相同的值
                if (lm.getKey().equals(m.getKey())) {
                    // 判断集合中是否已经有了对应的 k值
                    if(mapList.containsKey(lm.getValue())){
                        // 如果有,把map中 对应 k的v值取出,放入 list
                        List<Role> userList = mapList.get(lm.getValue());
                        // 删除 mapList中对应 k:v 值
                        mapList.remove(lm.getValue());
                        userList.add((Role) m.getValue());
                        // 再次加入
                        mapList.put(lm.getValue(),userList);
                    }else {
                        List<Role> userList = new ArrayList<>();
                        userList.add((Role) m.getValue());
                        mapList.put(lm.getValue(),userList);
                    }
                }
            }
        }

        System.out.println(mapList);

2、两个相似的对象复制属性

2.1、通过反射将一个对象的值赋值个另外一个对象(前提:对象中属性的名字相同
原文:将一个实体数据1复制到另一个具有相同属性的实例2中

	A a = new A();
	a.setName("张三");
	a.setPwd("1234");
	AVo ao = new AVo();
	//将 a 中的数据复制到 ao 中
	BeanUtils.copyProperties(a, ao);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值