将int[]转换为ArrayList。

37 浏览
0 Comments

将int[]转换为ArrayList。

int[]数组元素复制到ArrayList的最佳方式是什么?

我需要快速完成,那么最快的方法是什么?

0
0 Comments

问题的原因是ArrayList不适合存储原始类型(例如int),ArrayList只能存储对象而不是原始类型。虽然有一些库可以用来存储原始类型的列表。如果确实想要将所有的原始类型int存储为Integer对象,就需要逐个将其转换为Integer,使用Integer.valueOf(...)方法(这样可以避免在不需要时创建额外的Integer实例)。

例如,下面的代码是可行的:

List list = Arrays.asList(1, 2, 3);

但是下面的代码是不可行的:

int[] i = { 1, 2, 3 };
List list = Arrays.asList(i); // 这样会得到List

因为数组实际上也是一个对象,当使用原始类型int时,在使用var-args时会将其视为对象处理。但是对象数组可以正常工作:

List list = Arrays.asList(new Object[2]);

因此,解决方法如下:

int[] array = { 1, 2, 3 };
ArrayList list = new ArrayList(array.length);
for (int i = 0; i < array.length; i++)
  list.add(Integer.valueOf(array[i]));

自Java 1.5以来,不再需要使用Integer.valueOf(),因为有了自动装箱(autoboxing)的特性。所以可以简化为:

int[] array = { 1, 2, 3 };
ArrayList list = new ArrayList(array.length);
for (int i = 0; i < array.length; i++)
  list.add(array[i]);

看来确实没人提到过这个问题,谢谢你的指出。

0
0 Comments

问题:将int[]转换为ArrayList的原因是什么?如何解决?

在上述内容中,我们可以看到两种将int[]转换为ArrayList的方法。首先,我们介绍了使用Guava库的方法。Guava库是一个流行的Java类库,提供了许多实用的功能。在Guava中,我们可以使用Ints.asList方法将int[]转换为List。如果我们希望得到一个ArrayList,我们可以将Ints.asList返回的List传递给Lists.newArrayList方法。

然而,如果我们没有使用Guava库,只有一个int[],我们需要使用传统的方法来完成转换。我们需要创建一个空的ArrayList,并使用for循环遍历int[]中的每个元素,将其添加到ArrayList中。

总结起来,将int[]转换为ArrayList的原因是为了将基本类型数组转换为对象类型的集合。使用Guava库可以简化这个过程,而不需要自己编写循环代码。

下面是使用Guava库和传统方法将int[]转换为ArrayList的代码示例:

使用Guava库:

int[] array;

List list = Ints.asList(array);

List arrayList = Lists.newArrayList(Ints.asList(array));

传统方法:

int[] array;

List list = new ArrayList<>(array.length);

for (int val : array) {

list.add(val);

}

通过上述两种方法,我们可以将int[]转换为ArrayList,以便在需要使用ArrayList的场景中进行操作。

0
0 Comments

问题出现的原因是Arrays.asList(intArray)返回的是一个List,而不是List,因此无法将int[]转换为ArrayList。解决方法是使用循环将intArray的每个元素添加到ArrayList中,或者使用Arrays.asList()方法将intArray转换为List,然后再将其作为参数传递给ArrayList的构造函数。代码如下:

// 使用循环将intArray的每个元素添加到ArrayList中
List intList = new ArrayList(intArray.length);
for (int i=0; i,然后再传递给ArrayList的构造函数
List intList = new ArrayList(Arrays.asList(intArray));

另外,如果要避免重新分配数组,可以在创建ArrayList时指定初始容量为intArray.length。最后,需要注意的是,问题中提到的最后一行是误导性的,如果已经处理的是Integer而不是int,就不需要使用new ArrayList()了,另外也不需要将intArray转换为Integer[]。

0