将 int[] 转换为 ArrayList
将数组元素重新复制到 ?int[]
ArrayList
我需要快速完成此操作,那么最快的方法是什么?
将数组元素重新复制到 ?int[]
ArrayList
我需要快速完成此操作,那么最快的方法是什么?
ArrayList 不是 int 等基元的最佳存储。ArrayList 存储的对象不是基元。有一些库可用于具有基元的列表。如果您真的想将所有基元存储为一个对象,则必须使用它们逐个转换(因此在不需要时不会创建额外的Integed实例)。int
Integer
Integer.valueOf(...)
虽然你可以这样做:
List<Integer> list = Arrays.asList(1, 2, 3);
您不能这样做:
int[] i = { 1, 2, 3 };
List<Integer> list = Arrays.asList(i); // this will get you List<int[]>
因为数组实际上是一个对象,当使用诸如int之类的基元时,在var-args中也被视为对象。对象数组的工作原理是:
List<Object> list = Arrays.asList(new Object[2]);
因此,大致如下:
int[] array = { 1, 2, 3 };
ArrayList<Integer> list = new ArrayList<Integer>(array.length);
for (int i = 0; i < array.length; i++)
list.add(Integer.valueOf(array[i]));
使用 Arrays#asList(T... a)
创建“由指定数组支持的固定大小列表。(对返回列表的更改“直写”到数组。
Integer[] intArray = {1, 2, 3, 42}; // cannot use int[] here
List<Integer> intList = Arrays.asList(intArray);
或者,将两种数据结构解耦:
List<Integer> intList = new ArrayList<Integer>(intArray.length);
for (int i=0; i<intArray.length; i++)
{
intList.add(intArray[i]);
}
或者更简洁地说:
List<Integer> intList = new ArrayList<Integer>(Arrays.asList(intArray));