我有以下代码
public int solution(int X, int[] A) {
List<Integer> list = Arrays.asList(A);
由于某种原因,它抛出了以下编译错误
Solution.java:11:错误:不兼容的类型:推理变量T有 不相容的界限 List list = Arrays.asList(A); ^ 等式约束:整数 下界:int []其中T是一个类型变量: T扩展了方法asList(T ...)
中声明的Object
我认为这是一个Java 8功能,但我不确定如何解决错误
答案 0 :(得分:28)
Arrays.asList
期待变量Object
。 int
不是Object
,而是int[]
,因此Arrays.asList(A)
只会创建一个List<int[]>
元素。
您可以使用IntStream.of(A).boxed().collect(Collectors.toList());
答案 1 :(得分:5)
在Java 8中,你可以做到
List<Integer> list = IntStream.of(a).boxed().collect(Collectors.toList());
答案 2 :(得分:1)
没有从int []转换为List的快捷方式,因为Arrays.asList不处理装箱,只会创建一个不是你想要的List。你必须制作一种实用方法。
int[] ints = {1, 2, 3};
List<Integer> intList = new ArrayList<Integer>();
for (int index = 0; index < ints.length; index++)
{
intList.add(ints[index]);
}