Convert Integer List to int array [duplicate]

2019-04-04 07:27发布

问题:

This question already has an answer here:

  • How to convert List<Integer> to int[] in Java? [duplicate] 16 answers

Is there a way, to convert a List of Integers to Array of ints (not integer). Something like List to int []? Without looping through the list and manually converting the intger to int.

回答1:

I'm sure you can find something in a third-party library, but I don't believe there's anything built into the Java standard libraries.

I suggest you just write a utility function to do it, unless you need lots of similar functionality (in which case it would be worth finding the relevant 3rd party library). Note that you'll need to work out what to do with a null reference in the list, which clearly can't be represented accurately in the int array.



回答2:

You can use the toArray to get an array of Integers, ArrayUtils from the apache commons to convert it to an int[].


List<Integer> integerList = new ArrayList<Integer>();
Integer[] integerArray = integerList.toArray(new Integer[0]);
int[] intArray = ArrayUtils.toPrimitive(integerArray);

Resources :

  • Apache commons - ArrayUtils.toPrimitive(Integer[])
  • Apache commons lang
  • Javadoc - Collection.toArray(T[])

On the same topic :

  • How to convert List to int[] in Java?


回答3:

No :)

You need to iterate through the list. It shouldn't be too painful.



回答4:

Here is a utility method that converts a Collection of Integers to an array of ints. If the input is null, null is returned. If the input contains any null values, a defensive copy is created, stripping all null values from it. The original collection is left unchanged.

public static int[] toIntArray(final Collection<Integer> data){
    int[] result;
    // null result for null input
    if(data == null){
        result = null;
    // empty array for empty collection
    } else if(data.isEmpty()){
        result = new int[0];
    } else{
        final Collection<Integer> effective;
        // if data contains null make defensive copy
        // and remove null values
        if(data.contains(null)){
            effective = new ArrayList<Integer>(data);
            while(effective.remove(null)){}
        // otherwise use original collection
        }else{
            effective = data;
        }
        result = new int[effective.size()];
        int offset = 0;
        // store values
        for(final Integer i : effective){
            result[offset++] = i.intValue();
        }
    }
    return result;
}

Update: Guava has a one-liner for this functionality:

int[] array = Ints.toArray(data);

Reference:

  • Ints.toArray(Collection<Integer>)


回答5:

    List<Integer>  listInt = new ArrayList<Integer>();

    StringBuffer strBuffer = new StringBuffer();

    for(Object o:listInt){
        strBuffer.append(o);
    }

    int [] arrayInt = new int[]{Integer.parseInt(strBuffer.toString())};

I think this should solve your problem



标签: java core