MapValueCloneTest.javajava
package org.apache.java.test; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.java.entity.EmployInfo; import org.apache.java.entity.PassInfo; public class MapValueCloneTest { public static void main(String[] args) throws Exception{ HashMap<String, List<EmployInfo>> employInfo = new HashMap<String, List<EmployInfo>>(); List<EmployInfo> employList = new ArrayList<EmployInfo>(); employList.add(new EmployInfo("libo", "18767136865")); employList.add(new EmployInfo("liba", "18767136864")); employList.add(new EmployInfo("liaa", "18767136863")); employInfo.put("1", employList); employInfo.put("2", employList); PassInfo[] sre = new PassInfo[3]; for(int i = 0; i < sre.length; i++){ sre[i] = new PassInfo(); } Map<String,List<Object>> passInfo = mapInfoToOtherMap(employInfo,sre); Iterator<Entry<String, List<Object>>> pasInfo = passInfo.entrySet().iterator(); while (pasInfo.hasNext()) { List<Object> lpInfo = pasInfo.next().getValue(); for (Object tempPass : lpInfo) { System.out.println("員工姓名:" + ((PassInfo) tempPass).getEmployName()); System.out.println("員工號碼:" + ((PassInfo) tempPass).getEmployNumber()); } } } /** * Map之間的值拷貝 * * @Description: Map中包含List對象,List泛型,實現兩個Map之間的值拷貝 * @param srcInfo * 源Map * @param objEntity * 生成對象實例數組 * @return 生成後的Map對象 * @throws Exception */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static Map<String, List<Object>> mapInfoToOtherMap( HashMap srcInfo, Object... objEntity) throws Exception { // 返回對象的實例化 Map<String,List<Object>> returnInfo = new HashMap<String,List<Object>>(); // 得到迭代對象 Iterator<?> iterInfo = srcInfo.entrySet().iterator(); // 開始迭代 while (iterInfo.hasNext()) { // 返回對象的List集合 List obj = new ArrayList<Object>(); // 獲取Map中的鍵值對 Entry<String, List<Object>> entryInfo = (Entry<String, List<Object>>) iterInfo.next(); String key = entryInfo.getKey(); List<Object> insInfo = entryInfo.getValue(); // 對List對象進行迭代 Iterator<Object> objInfo = insInfo.iterator(); // 臨時變量,用戶獲取生成的對象實例 int k = 0; // 開始迭代 while (objInfo.hasNext()) { // 得到List中的Bean對象,經過反射拿到屬性 Object srcObj = objInfo.next(); Field[] srcFiled = srcObj.getClass().getDeclaredFields(); // 獲取生成的對象實例,經過反射拿到屬性 Object dirObj = objEntity[k]; Field[] dirFiled = dirObj.getClass().getDeclaredFields(); for (int i = 0; i < srcFiled.length; i++) { // 拿到屬性值,進行拷貝 srcFiled[i].setAccessible(true); Object srcValueObj = srcFiled[i].get(srcObj); dirFiled[i].setAccessible(true); dirFiled[i].set(dirObj, srcValueObj); } // 放入List集合 obj.add(dirObj); k++; } // 放入Map集合 returnInfo.put(key, obj); } return returnInfo; } }
EmployInfo.javaapache
package org.apache.java.entity; /** * 員工信息類 * * @ClassName: EmployInfo * @Description: 員工信息類 * @author tyu_libo * @date 2014年12月20日 下午6:52:58 * */ public class EmployInfo{ /** * 員工姓名 */ private String employName; /** * 員工號碼 */ private String employNumber; /** * @return the employName */ public String getEmployName() { return employName; } /** * @param employName * the employName to set */ public void setEmployName(String employName) { this.employName = employName; } /** * @return the employNumber */ public String getEmployNumber() { return employNumber; } /** * @param employNumber * the employNumber to set */ public void setEmployNumber(String employNumber) { this.employNumber = employNumber; } /** * * @Description: * @param employName * @param employNumber * @throws */ public EmployInfo(String employName, String employNumber) { this.employName = employName; this.employNumber = employNumber; } }
UserInfo.java數組
package org.apache.java.entity; import java.io.Serializable; /** * 用戶信息Entity * * @author Administrator * */ public class UserInfo implements Serializable{ /** * */ private static final long serialVersionUID = -7947100192425556667L; private String userName; private String className; private String telNmuber; private String ipAddress; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getTelNmuber() { return telNmuber; } public void setTelNmuber(String telNmuber) { this.telNmuber = telNmuber; } public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } public UserInfo(){} public UserInfo(String userName, String className, String telNmuber, String ipAddress) { super(); this.userName = userName; this.className = className; this.telNmuber = telNmuber; this.ipAddress = ipAddress; } }