可能重复:
How to create ArrayList (ArrayList<T>) from array (T[]) in Java
如何实施此方法:
List<Integer> toList(int[] integers) {
???
//return Arrays.asList(integers); doesn't work
}
答案 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);
}
}
按预期测试并正常工作!