The best way to transform int[] to List<Integer> in Java?

Possible Duplicate:
How to create ArrayList (ArrayList<T>) from array (T[]) in Java

How to implement this method:

List<Integer> toList(int[] integers) {
    ???
    //return Arrays.asList(integers); doesn't work
}

There's probably a built-in method to do it somewhere* (as you note, Arrays.asList won't work as it expects an Integer[] rather than an int[] ).

I don't know the Java libraries well enough to tell you where that is. But writing your own is quite simple:

public static List<Integer> createList(int[] array) {
    List<Integer> list = new ArrayList<Integer>(array.length);
    for (int i = 0; i < array.length; ++i) {
        list.add(array[i]);
    }
    return list;
}

Obviously one downside of this is that you can't do it generically. You'll have to write a separate createList method for each autoboxed primitive type you want.

*And if there isn't, I really wonder why not.


List<Integer> asList(final int[] integers) {
    return new AbstractList<Integer>() {
        public Integer get(int index) {
            return integers[index];
        }

        public int size() {
            return integers.length;
        }
    };
}

List<Integer> toList(int[] integers) {
    // Initialize result's size to length of the incoming array
    // this way it will not require reallocations
    ArrayList<Integer> result = new ArrayList<Integer>( integers.length );

    for ( int cur: integers )
    {
        result.add( Integer.valueOf( cur ) );
    }

    return result;
}
链接地址: http://www.djcxy.com/p/17634.html

上一篇: 如何用ArrayList替换数组?

下一篇: 在Java中将int []转换为List <Integer>的最佳方式是什么?