我看到了这个问题: Create ArrayList from array
但是,当我使用以下代码尝试该解决方案时,它并不适用于所有情况:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class ToArrayList {
public static void main(String[] args) {
// this works
String[] elements = new String[] { "Ryan", "Julie", "Bob" };
List<String> list = new ArrayList<String>(Arrays.asList(elements));
System.out.println(list);
// this works
List<Integer> intList = null;
intList = Arrays.asList(3, 5);
System.out.println(intList);
int[] intArray = new int[] { 0, 1 };
// this doesn't work!
intList = new ArrayList<Integer>(Arrays.asList(intArray));
System.out.println(intList);
}
}
我在这里做错了什么?代码 intList = new ArrayList<Integer>(Arrays.asList(intArray));
不应该编译得很好吗?
原文由 tuxdna 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题在
是
int[]
被视为单个Object
实例,因为原始数组从Object
扩展。如果您有Integer[]
而不是int[]
这将起作用,因为现在您发送的是Object
的数组。根据您的评论:如果您仍想使用
int[]
(或另一个原始类型数组)作为主要数据,那么您需要使用包装类创建一个额外的数组。对于这个例子:但是由于您已经在使用
for
循环,我不介意使用临时包装器类数组,只需将您的项目直接添加到列表中即可: