在Java中将int []转换为List <integer>的最佳方法是什么?</integer>

时间:2011-07-08 16:15:03

标签: java generics collections

  

可能重复:
  How to create ArrayList (ArrayList<T>) from array (T[]) in Java

如何实施此方法:

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

6 个答案:

答案 0 :(得分:4)

可能有一种内置的方法可以在某个地方执行此操作*(正如您所说,Arrays.asList将无效,因为它需要Integer[]而非int[]。)

我不太了解Java库,可以告诉你它在哪里。但是写你自己很简单:

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;
}

显然,这方面的一个缺点是你不能一般地做到这一点。您必须为所需的每个自动编码的基本类型编写单独的createList方法。

*如果没有,我真的想知道为什么不。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

使用commons-lang3 org.apache.commons.lang3.ArrayUtils.toObject(<yout int array>)然后java.util.Arrays.asList(<>)

ArrayUtils.toObject()复制数组,而Array.asList()将只创建由新数组支持的列表。

int[] a = {1, 2, 3};
List<Integer> aI = Arrays.asList(ArrayUtils.toObject(a));

编辑:如果您希望通过列表界面 {{1>}新元素(调整大小),这不会起作用希望能够添加新元素,您可以使用add(),但这会创建一个副本。

答案 3 :(得分:1)

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;
}

答案 4 :(得分:0)

我不认为有一种快速的方法可以做到这一点。我相信你将不得不迭代数组并逐一添加它。

答案 5 :(得分:0)

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

public class Listing {
  public static void main(String[] args) {

   int[] integers = {1,2,3,4};

   java.util.List<Integer> list = new ArrayList<Integer>();
  for (int i=0; i< integers.length; i++)
  {
      list.add(integers[i]);
  }
  System.out.println(list);
}
}

按预期测试并正常工作!