MapValueCloneTest.java
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.java
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;
}
}