ArrayList al=new ArrayList();
al为ArrayList型
int[] array=(int[])al.toArray(new int[al.size()]);
我想把这个ArrayList转化为int数组
但这句出错,怎么改呢?
Integer[] array=((Integer[])al.toArray());
可以转化为Integer数组,但Integer数组怎么转成int数组??谢谢

解决方案 »

  1.   


     
             Object[] array= list.toArray();
             
            
             int[] intArray = new int[array.length];
             for(int i=0;i<array.length;i++){
             Integer temp =(Integer) array[i]; 
             intArray[i] = temp.intValue();
             System.out.println(intArray[i]);
             }
      

  2.   

    toArray
    默认返回的是  Object[]
    显然int 不属于 Object试试泛型
      

  3.   

    Integer[] array=(Integer[])al.toArray(new Integer[0]);
      

  4.   


    import java.util.*;
    public class Test {
    public static void main(String[] args){
    ArrayList<Integer> arr = new ArrayList<Integer>();
    for(int i = 0;i < 10;i++){//
    arr.add(i);//自动打包功能,装成Integer类型
    }
    int[] array = new int[arr.size()];
    for(int i = 0;i < array.length;i++){
    array[i] = arr.get(i);////自动解包功能,解包成int类型
    }
    for(int i:array){
    System.out.println(i);
    }
    }
    }
      

  5.   

    toArray(new Integer[0])这种写法都是非常低级的程序员才写出来的.就象很多程序员写
    String str = new String("");
    str = "Axman";
    明知道下面一定要赋一个有用的值,还有先生成一个空的对象然后抛弃.
    明知道当数据的length为0时toArray方法会生成一个新数组.为什么还要生成一个length为0的数据对象
    然后没有任何用处就抛弃,怕用户的内存太大会空耗电?
      

  6.   


    一个length为0的对象又会占多少内存呢?
      

  7.   

    ArrayList 是什么意思啊???  作用是什么啊??
    如何使用啊??
      

  8.   

    不妨试试 ArrayList al=new ArrayList();
    Integer[] array=((Integer[])al.toArray());
    int[] in=new int[80];

    for (int i = 0; i < array.length; i++) {
    in[i]=array[i].intValue();
    System.out.println("in["+i+"]==="+in[i]);
    }
    方法比较笨!!
      

  9.   

    你去去 core java II,就不会这么说
      

  10.   

    上面的强制转换可以不要吧
    codeInteger[] array = al.toArray(new Integer[0]);
      

  11.   

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test { /**
     * 将指定 {@link List} 中 {@link Integer} 类型的元素转换为 int 数组。
     * <p><strong>注意</strong>:此方法在多线程同时修改 {@code List} 的情况下可能抛出
     * {@link IndexOutOfBoundsException} 异常,或使 {@code List} 中元素转换不完全。</p>
     * @param list 要转换的列表。
     * @return 转换成的 int 数组。
     */
    public static int[] toIntArray(List list) {
    if (list == null) throw new NullPointerException("argument list is null");
    int LEN = 0;
    if ((LEN = list.size()) == 0) return new int[0];
    int[] result = new int[LEN];
    int n = 0;
    for (int i = 0; i < LEN;) {
    Object o = list.get(i++);
    if (o != null && o instanceof Integer) {
    result[n++] = ((Integer)o).intValue();
    }
    }
    if (n == LEN) return result;
    int[] result2 = new int[n];
    System.arraycopy(result, 0, result2, 0, n);
    return result2;
    } public static void main(String[] args) {
    List test = new ArrayList();
    for (int i = 0; i < 100; i++) {
    double rnd = Math.random();
    if (rnd < 0.3) {
    test.add("test string");
    } else if (rnd < 0.69) {
    test.add(Integer.valueOf((int)(100 * Math.random())));
    } else {
    test.add(null);
    }
    }
    System.out.println("TestData ===========================");
    for (Iterator i = test.iterator(); i.hasNext();) {
    System.out.println(i.next());
    }
    System.out.println("Result =============================");
    int[] array = toIntArray(test);
    for (int i = 0; i < array.length;) {
    System.out.println(array[i++]);
    }
    }}
      

  12.   

    想不到这样也可以啊!
    之前我也碰到要将集合转换成数组的问题,不知道怎么转,
    看来对API还是不够熟悉啊!
      

  13.   

    Integer[] array=(Integer[])al.toArray(new Integer[al.size()]);