java List Map 转换成一个List T 工具类

List<Object[]> 转换成一个List<T> 工具类,代码如下:

ListMapToBeanUtils.java文件:

package com.map.utils;

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

public class ListMapToBeanUtils {

	/**
	 * List<Map<String, Object>>转List<T>
	 * @param list
	 * @param clazz
	 * @return
	 * @throws Exception
	 */
	public static <T> List<T> castMapToBean(List<Map<String, Object>> list, Class<T> clazz) throws Exception {
		if(list == null || list.size()==0) {
			return null;
		}
		List<T> tList = new ArrayList<T>();
		Field[] fields = clazz.getFields();
		
		T t;
		for(Map<String, Object> map : list) {
			// 每次都先初始化一遍,然后再设置值
			t = clazz.newInstance();
			for(Field field : fields) {
				// 设置值, 类型要和vo对应好,不然会报类型转换错误
				field.set(t, map.get(field.getName()));
			}
			tList.add(t);
		}
		
		return tList;
	}
	
}

PhoneVO.java文件:

package com.xm.bean;

import java.io.Serializable;

/**
 * vo
 * @author ouyangjun
 */
public class PhoneVO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public String plate;
	public Long number;
	public Double memory;
	public Double size;

	public String getPlate() {
		return plate;
	}

	public void setPlate(String plate) {
		this.plate = plate;
	}

	public Long getNumber() {
		return number;
	}

	public void setNumber(Long number) {
		this.number = number;
	}

	public Double getMemory() {
		return memory;
	}

	public void setMemory(Double memory) {
		this.memory = memory;
	}

	public Double getSize() {
		return size;
	}

	public void setSize(Double size) {
		this.size = size;
	}
	
}

MapToBeanTest.java文件:

package com.map.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.map.utils.ListMapToBeanUtils;
import com.xm.bean.PhoneVO;

public class MapToBeanTest {

	public static void main(String[] args) throws Exception {
		// 初始化
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("plate", "hw");
		map.put("number", 13655555555L);
		map.put("memory", 4.0);
		map.put("size", 6.0);
		
		Map<String, Object> map1 = new HashMap<String, Object>();
		map1.put("plate", "apple");
		map1.put("number", 13677777777L);
		map1.put("memory", 5.5);
		map1.put("size", 3.8);
		
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		list.add(map);
		list.add(map1);
		
		// List<Map<String, Object>>转List<T>
		List<PhoneVO> phoneList = ListMapToBeanUtils.castMapToBean(list, PhoneVO.class);
		System.out.println("==>phoneList.size(): " + phoneList.size());
		for(PhoneVO phone : phoneList) {
			System.out.println(phone.getPlate() + "\t" + phone.getNumber() +
					"\t" + phone.getMemory() + "\t" + phone.getSize());
		}
		
	}

}

执行结果如下:

下面提供一个用com.alibaba.fastjson实现List<Map<Object,Object>>转List<T>的方法,代码如下:
实现原理:先把map转换成json字符串,再把json字符串转换成对象。

package hk.com.cre.process.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;

/**
 * @Description:
 * @author ouyangjun
 * @version
 * @Date
 */
public class ObjectConvertUtils {

	/**
	 * List<Map<Object,Object>>转换List<T>
	 * @param map
	 * @param beanClass
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static <T> List<T> castMapToBean(List<Map<Object, Object>> list, Class<?> beanClass) {
		List<T> returnList = new ArrayList<T>();
        if (list == null || list.size()==0) {
        	return null;
        }
        
        String json = "";
        for(Map<Object, Object> map : list) {
        	json = JSONObject.toJSONString(map);
        	
        	// 添加到集合中
        	returnList.add((T)JSONObject.parseObject(json, beanClass));
        }
        // 返回
        return returnList;
    }
	
}

本文说明:该文章属于原创,如需转载,请标明文章转载来源

猜你喜欢

转载自blog.csdn.net/p812438109/article/details/81222649