javaarraysarraylisttype-conversioninteger

Converting ArrayList of Integer objects to an int array


Possible Duplicate:
How to convert an ArrayList containing Integers to primitive int array?

I have tried the code below, but it does not work. Do I have to make a loop copy the ArrayList into an array?

int[]intArray = (int[]) integerArrayList.toArray();

Solution

  • If you want primitive type array, you can use Apache Commons ArrayUtils#toPrimitive method to get primitive array from wrapper array: -

    public static int[] toPrimitive(Integer[] array)
    

    You can use it like this: -

    int[] arr = ArrayUtils.toPrimitive((Integer[])integerArrayList.toArray());
    

    Or, you can use the 1-arg version of toArray method, that takes an array and returns the array of that type only. That way, you won't have to the typecasting.

    List<Integer> myList = new ArrayList<Integer>();
    Integer[] wrapperArr = myList.toArray(new Integer[myList.size()]);
    
    // If you want a `primitive` type array
    int[] arr = ArrayUtils.toPrimitive(wrapperArr);
    

    However, if you are Ok with the wrapper type array (Which certainly will not trouble you), then you don't need to do that last step.


    Also, you can also create a primitive array, without having to create that intermediate Wrapper type array. For that you would have to write it through loop: -

    int[] arr = new int[myList.size()];
    
    for(int i = 0; i < myList.size(); i++) {
        if (myList.get(i) != null) {
            arr[i] = myList.get(i);
        }
    }