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;
}
}
本文说明:该文章属于原创,如需转载,请标明文章转载来源