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;

解决方案 »

  1.   

    使用 带参数的 toArray方法。
      

  2.   

    toArray后是字符串数组,不能再转成map的
      

  3.   

    同学你太天真了。
    要么遍历一个一个强制转换。要么这样Map[] m =List.toArray(new Map[0]);即1楼说的带参数toArray方法。
      

  4.   

    返回的本来就是一个Object数组,只不过每一维放的都是HashMap
    给你下面这个例子你说明白了
    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就会报错
      

  5.   

    package com.j913;import java.util.ArrayList;
    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;
    }
    }
      

  6.   

    package com.j913;import java.util.ArrayList;
    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);