替换map的key并通过反射给实体类赋值(做接口或对比字段常用到)

本文介绍了一个Java程序中如何使用反射机制将Map集合中的数据转换为实体类对象,并实现了一种新的方法来替换Map集合中的键名。通过具体示例展示了整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Test {

 /**
  * @param 无聊写着玩
  */
 public static void main(String[] args) {
  Test t = new Test();
  //list entity 返回
  List<TestInfo> list = t.getEntityList();
  for(TestInfo entity :list){
   System.out.println("A1 : " + entity.getA1());
   System.out.println("B1 : " + entity.getB1());
   System.out.println("C1 : " + entity.getC1());
   System.out.println("D1 : " + entity.getD1());
   System.out.println("E1 : " + entity.getE1());
   System.out.println("F1 : " + entity.getF1());
   System.out.println("G1 : " + entity.getG1());
  }
  //list map 返回
  List<Map<String,Object>> listMap = t.getNewMapList();
  for(Map<String,Object> map :listMap){
   Set<String> keys = map.keySet();
   for(String key:keys){
    System.out.println(key +" : "+map.get(key));
   }
  }
 }
 
 /**
  * 封装成 list entity 返回
  * @return
  */
 public List<TestInfo> getEntityList(){
  List<Map<String,Object>> listMap = this.getNewMapList();
  List<TestInfo> list =null;
  try {
   if(listMap!=null&&listMap.size()>0){
    TestInfo entity = null;
    list = new ArrayList<TestInfo>();
    for(Map<String,Object> map:listMap){
     entity = new TestInfo();
     Set<String> keys = map.keySet();
     for(String key:keys){
//     System.out.println(key+": "+map.get(key));
      String fieldName = key ;
      Object fieldValue = map.get(key);
      this.setValue(entity, fieldName, fieldValue);//反射赋值
     }
     list.add(entity);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return list;
 }
 
 
 /**
  * 反射给实体类赋值
  * @param entity 当前实体类对象
  * @param fieldName 实体类 字段名称
  * @param fieldValue 实体类 字段对应的值
  * @throws Exception
  */
 private void setValue(Object entity,String fieldName,Object fieldValue) throws Exception{
  Field[] field = entity.getClass().getDeclaredFields();// 获取实体类的所有属性,返回Field数组
  for (int j = 0; j < field.length; j++) {
   String name = field[j].getName(); // 获取属性的名字
   field[j].setAccessible(true);
   if (fieldName.equals(name)) {
    field[j].set(entity, fieldValue);// 赋值
    break;
   }
  }   
 }
 
 
 /**
  * new list  替换map的key的方法
  * @return
  */
 public List<Map<String,Object>> getNewMapList(){
  List<Map<String,Object>> newList = null;
  List<Map<String,Object>> oldList = this.getDataMapList();
  if(oldList!=null&&oldList.size()>0){
   newList = new ArrayList<Map<String,Object>>();
   Map<String,Object> keyMap = this.getKeyMap();
   Map<String,Object> valueMap = null;
   for(Map<String,Object> map:oldList){
    Set<String> keys = map.keySet();
    valueMap = new HashMap<String, Object>();
    for(String key :keys){
     //get value
     Object value = map.get(key);
     //new key
     String newKey = keyMap.get(key).toString();
     valueMap.put(newKey, value);
    }
    newList.add(valueMap);
   }
  }
  return newList;
 }

 /**
  * data list
  * @return
  */
 private List<Map<String,Object>> getDataMapList(){
  List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  Map<String,Object> map = null;
  for(int i=0;i<3;i++){
   map = new HashMap<String, Object>();
   map.put("A", "1");
   map.put("B", "2");
   map.put("C", "3");
   map.put("D", "4");
   map.put("E", "5");
   map.put("F", "6");
   map.put("G", "7");
   list.add(map);
  }
  return list;
 }
 
 /**
  * new Key
  * @return
  */
 private Map<String,Object> getKeyMap(){
  Map<String,Object> map = new HashMap<String, Object>();
  map.put("A", "A1");
  map.put("B", "B1");
  map.put("C", "C1");
  map.put("D", "D1");
  map.put("E", "E1");
  map.put("F", "F1");
  map.put("G", "G1");
  return map;
 }
 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值