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);