尝试将int数组转换为列表

时间:2013-05-03 14:13:57

标签: java arrays list

我正在尝试通过执行

将int类型的数组转换为List
List<Integer> endingRoutesBusStopsList = Arrays.asList(endingRoutesBusStops);

但由于某种原因,我不断收到错误

Type mismatch: cannot convert from List<int[]> to List<Integer>

我不明白这是什么问题。

我知道

List<int[]> endingRoutesBusStopsList = Arrays.asList(endingRoutesBusStops);

将解决错误,但我不能按照我想要的方式使用它。

有人有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是因为int[]Integer[]不同。自动装箱不适用于Array

答案 1 :(得分:2)

问题是因为“int []”是一个对象,

Arrays.asList(T ...)获得泛型vararg,这意味着它将“int []”视为“Object”(数组int []和Integer的公共超类是Object)

因此,从asList方法的角度来看,你不会传递一个int数组,而是传递一个对象。

无论如何,你应该从int到包装器Integer进行隐式转换。建议明确说明。

答案 2 :(得分:0)

我们错过了更多的代码,但总的来说,让我尝试用代码回答:

这有效:

Integer[] arrayOfInt = { Integer.valueOf(0), Integer.valueOf(1) };
List<Integer> listOfInt = Arrays.asList(arrayOfInt);

这也有效,因为原始“1”被自动装箱到Integer对象:

Integer[] arrayOfInt = { 1, 2, 3, 4 };
List<Integer> listOfInt = Arrays.asList(arrayOfInt);

最后,这不起作用,因为int []无法自动装箱到Integer []:

int[] arrayOfInt = { 1, 2, 3, 4 };
List<Integer> listOfInt = Arrays.asList(arrayOfInt);

更新:这与@MichaelBorek的讨论中的评论相似。 This example重复尝试使用相同的代码进行自动装箱。自动装箱的成本似乎是使用它的代码比直接使用对象的代码长 5次