List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> m1 = new HashMap<String, Object>();
m1.put("1","1");
Map<String, Object> m2 = new HashMap<String, Object>();
m2.put("2","2");
list.add(m1);
list.add(m2);
System.out.println(list.toString());
Map[] arr = new HashMap[list.size()];
Object[] objs = list.toArray();
arr = (Map[])objs;运行代码,出错
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
Map<String, Object> m1 = new HashMap<String, Object>();
m1.put("1","1");
Map<String, Object> m2 = new HashMap<String, Object>();
m2.put("2","2");
list.add(m1);
list.add(m2);
System.out.println(list.toString());
Map[] arr = new HashMap[list.size()];
Object[] objs = list.toArray();
arr = (Map[])objs;运行代码,出错
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
要么遍历一个一个强制转换。要么这样Map[] m =List.toArray(new Map[0]);即1楼说的带参数toArray方法。
给你下面这个例子你说明白了
Object obj[] = new Object[]{1,2,3};
System.out.println(Integer[].class.isInstance(obj));
System.out.println(Object[].class.isInstance(obj));
Object obj2[] = new Integer[]{1,2,3};
System.out.println(Integer[].class.isInstance(obj2));
System.out.println(Object[].class.isInstance(obj2));//这个输出true是因为Object是Integer的super
你会发现,输出为为false\true\false\true,如果尝试把obj转制成Integer就会报错
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test2 {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> m1 = new HashMap<String, Object>();
m1.put("1","1");
Map<String, Object> m2 = new HashMap<String, Object>();
m2.put("2","2");
list.add(m1);
list.add(m2);
System.out.println(list.toString());
Map[] arr = new HashMap[list.size()];
Object[] objs = list.toArray(arr);//这儿,,告诉转换时,Object[]里面存储的是Map,
//不写的话Object[]里面放的都是Object类型的,下一步转换当然是错误的了。因为里面不对应。
arr = (Map[])objs;
}
}
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test2 {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> m1 = new HashMap<String, Object>();
m1.put("1","1");
Map<String, Object> m2 = new HashMap<String, Object>();
m2.put("2","2");
list.add(m1);
list.add(m2);
System.out.println(list.toString());
Map[] arr = new HashMap[list.size()];
Object[] objs = list.toArray(arr);//这儿,,告诉转换时,Object[]里面存储的是Map,
//不写的话Object[]里面放的都是Object类型的,下一步转换当然是错误的了。因为里面不对应。
arr = (Map[])objs;
}
}
Object[] objs = list.toArray(arr);