将int[]转换为ArrayList。
问题的原因是ArrayList不适合存储原始类型(例如int),ArrayList只能存储对象而不是原始类型。虽然有一些库可以用来存储原始类型的列表。如果确实想要将所有的原始类型int存储为Integer对象,就需要逐个将其转换为Integer,使用Integer.valueOf(...)方法(这样可以避免在不需要时创建额外的Integer实例)。
例如,下面的代码是可行的:
Listlist = Arrays.asList(1, 2, 3);
但是下面的代码是不可行的:
int[] i = { 1, 2, 3 }; Listlist = Arrays.asList(i); // 这样会得到List
因为数组实际上也是一个对象,当使用原始类型int时,在使用var-args时会将其视为对象处理。但是对象数组可以正常工作:
List
因此,解决方法如下:
int[] array = { 1, 2, 3 }; ArrayListlist = 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 }; ArrayListlist = new ArrayList (array.length); for (int i = 0; i < array.length; i++) list.add(array[i]);
看来确实没人提到过这个问题,谢谢你的指出。
问题:将int[]转换为ArrayList的原因是什么?如何解决?
在上述内容中,我们可以看到两种将int[]转换为ArrayList的方法。首先,我们介绍了使用Guava库的方法。Guava库是一个流行的Java类库,提供了许多实用的功能。在Guava中,我们可以使用Ints.asList方法将int[]转换为List
然而,如果我们没有使用Guava库,只有一个int[],我们需要使用传统的方法来完成转换。我们需要创建一个空的ArrayList,并使用for循环遍历int[]中的每个元素,将其添加到ArrayList中。
总结起来,将int[]转换为ArrayList的原因是为了将基本类型数组转换为对象类型的集合。使用Guava库可以简化这个过程,而不需要自己编写循环代码。
下面是使用Guava库和传统方法将int[]转换为ArrayList的代码示例:
使用Guava库:
int[] array;
List
List
传统方法:
int[] array;
List
for (int val : array) {
list.add(val);
}
通过上述两种方法,我们可以将int[]转换为ArrayList,以便在需要使用ArrayList的场景中进行操作。
问题出现的原因是Arrays.asList(intArray)返回的是一个List
// 使用循环将intArray的每个元素添加到ArrayList中 ListintList = new ArrayList (intArray.length); for (int i=0; i ,然后再传递给ArrayList的构造函数 List intList = new ArrayList (Arrays.asList(intArray));
另外,如果要避免重新分配数组,可以在创建ArrayList时指定初始容量为intArray.length。最后,需要注意的是,问题中提到的最后一行是误导性的,如果已经处理的是Integer而不是int,就不需要使用new ArrayList