1. 程式人生 > >java List Map 轉換成一個List T 工具類

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.getDeclaredFields();
		
		T t;
		for(Map<String, Object> map : list) {
			// 每次都先初始化一遍,然後再設定值
			t = clazz.newInstance();
			for(Field field : fields) {
				// 把序列化的欄位去除掉
				if(!"serialVersionUID".equals(field.getName())){
					// 由於Field都是私有屬性,所有需要允許修改
					field.setAccessible(true);
					
					// 設定值, 型別要和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;

	private String plate;
	private Long number;
	private Double memory;
	private 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;
    }
	
}

本文說明:該文章屬於原創,如需轉載,請標明文章轉載來源

相關推薦

java List Map 轉換一個List T 工具

List<Object[]> 轉換成一個List<T> 工具類,程式碼如下: ListMapToBeanUtils.java檔案: package com.map.utils; import java.lang.reflect.Field; i

將request中的參數轉換bean的萬能工具

object 否則 .get ring util bean 讀取 屬性 表單提交 package cn.itcast.utils; import java.util.Map; import javax.servlet.http.HttpServletRequest;

實體物件轉Map/Map實體物件的工具

package com.yanshu.test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.*; /**  * 實體物件轉成Map  * @auth

String 轉換 int, long, double工具

public class NumberUtil { private static String[] hanArr = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; private static Str

使用fastjson將listmap轉換json,出現$ref

這是轉換時出現的問題情況( map >> json ) 引用是通過"$ref"來表示的 引用 描述 "$ref":".." 上一級 "$ref":"@" 當前物件,也就是自引用

java JSON學習—List集合轉換JSON物件

1. 簡單的手動放置 鍵值對 到JSONObject,然後在put到JSONArray物件裡 List<Article> al = articleMng.find(f); System.out.println(al.size())

java 多執行緒處理一個list的集合

2016年08月03日 09:16:20 package A; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import j

如何將一個的屬性轉換一個MAP

需求:如何將一個類轉換成一個Map,同時針對類中的屬性有要求,Date型別 需要變成String,YYYY -MM-DD HH:mm:ss 物件需要變成json。如何寫一個通用的工具 下面是具體的實現方式 public interface ValueMapper { Strin

java 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 比如將二元查詢樹                       

list集合轉換datatable

/// 將list集合轉換成datatable /// </summary> /// <param name="list"></param> /// <returns></returns>

Java程式設計題:將一個十六進位制的字串轉換一個十進位制的整數

思路: 1.將字串轉換成一個一個的字元2.將字元轉換成十六進位制的數字 3.計算出結果 package test; public class Test { public static void main(String[] args) { String st

hibernate使用本地sql語句查詢,解決List Object轉換List Entity

本人第一次寫技術文件的部落格,可能有什麼語言語法問題,還有技術類的名詞誤解請多包涵,並予以指正方便我和大家更好的學習。廢話不多說,開始進行現在的任務。 我們在使用hibernate框架時,對於程式設計師使用hibernate模板HibernateTemplate進行事務處理

list集合轉換json資料,ajax請求返回json資料,再通過迴圈顯示出來

之前在網上查了很多關於迴圈顯示ajax返回值的方法,很多都不對的,顯示不了我要的結果。後來自己鼓搗出來了,發出來分享一下自己的成果。因為ajax不能返回集合的,需要把集合list轉換成json返回,再用迴圈的方式,顯示出結果。 操作層 //編碼方式request.set

JS中定義List然後轉換json交給後臺處理

=================定義List方法====================== function List(){     this.value = [];          /*新增*/     this.add = function(obj){      

兩個相同欄位list整合一個list

        List<Object> list_a = ajblService.selectGrpm(paraMap);          List<Object> list_b = ajblService.exceptGrpm(paraMap

JavaBean,List,Mapjson格式

普通JavaBean(以User為例)轉成json格式  1.轉成JSONArray型別  User user = new User();  user.setUsername("cxl");  user.setPassword("1234");  JSONArray json = JSONArray.from

List實體轉換DataTable

public static DataTable ToDataTable<T>(IList<T> data)         {             PropertyDe

在python中如何將兩個list合併一個list,不用for語句

除了直接相加(生成新的list),還有兩種方法(修改其中一個list): 用list的extend方法,L1.extend(L2),該方法將引數L2的全部元素新增到L1的尾部,例如: 1 2 3 4 5 >>> L1 = [1, 2, 3, 4, 5] >

將ResultSet結果集通過反射轉換物件LIST集合

說明:Lz新手,通過這個練習反射。(mysql資料庫) 一,簡單的建立一個數據庫,並給上資料。 二、 1.建立一個Emp.java 。 2.建立和 資料庫中各列名一樣的屬性,且為private型別。 3.有

Java對象轉換Map

vat illegal throw sse lar 復制代碼 set 對象 imp 需求總是千奇百怪,對象轉成map,看似沒必要,但就是有這個需求,所以記錄下來 首先是Bean 復制代碼package tools; import lombok.Data; /** 車輛實