public class Tools {
public static void putAll(java.util.Map m, java.util.Map mm) {
if (!m.isEmpty()) {
Set selfset = m.keySet();
Iterator selfit = selfset.iterator();
for (int i = 0; selfit.hasNext(); i++) {
Set mset = mm.keySet();
String skey = selfit.next().toString();
Iterator mit = mset.iterator();
while (mit.hasNext()) {
String mkey = mit.next().toString();
if (skey.equals(mkey)) {
m.put(mkey + "_" + i, mm.get(mkey));
} else {
m.put(mkey, mm.get(mkey));
}
}
}
} else {
m.putAll(mm);
}
} public static List getArrayList(List list, String[] objectName) {
List resultlist = null;
Map resultMap = null;
try {
resultlist = new ArrayList();
for (int i = 0, n = list.size(); i < n; i++) {
if (list.get(i) != null) {
if (list.get(i) instanceof Object[]) {
Object[] temp = (Object[]) list.get(i);
resultMap = new HashMap();
for (int j = 0, on = temp.length; j < on; j++) {
for (int o = 0, size = objectName.length; o < size; o++) {
Class c = Class.forName(objectName[o]);
if (temp[j].getClass() == c) {
Map map = BeanUtils.describe(temp[j]);
Tools.putAll(resultMap, map);
}
}
}
}
}
resultlist.add(resultMap);
}
// Iterator iii = resultMap.keySet().iterator();
// while (iii.hasNext()) {
// System.out.println(iii.next().toString());
// }
} catch (Exception ex) {
ex.printStackTrace();
}
// BeanUtils.describe()
return resultlist;
}
}
以上是我写代码.然后我用以下代码测试
  String [] objectName={CustomDAO.Bbsuser,CustomDAO.City,CustomDAO.Custom,CustomDAO.Provider,CustomDAO.Province,CustomDAO.Syspar};
CustomDAO cd = new CustomDAO();
UserRegLogic u = new UserRegLogic();
u.setSession();
try {
List list1 = u.getUserAllInfo("March");
List list =Tools.getArrayList(list1, objectName);
} catch (Exception e) {

e.printStackTrace();
}

u.closeSession();
list1 返回的是一个对像数组,就是Hibernate 多表查询返回的表东西,然运行,就出现错误了.java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
at java.util.HashMap$KeyIterator.next(HashMap.java:823)
at com.ectrip.util.Tools.putAll(Tools.java:99)
at com.ectrip.util.Tools.getArrayList(Tools.java:130)
at com.ectrip.user.services.UserRegLogic.getUserAllInfo(UserRegLogic.java:138)
at com.ectrip.test.DAOTest.test(DAOTest.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
我查了好久了,就是不知道那错了.请教各位高手.