Leetcode 349号问题

来源:7-8 映射的复杂度分析和更多映射相关问题

李爽爽爽爽

2018-09-13

老师您好,请问一下,前面已经得到一个ArrayList(Interger),还需要转化成int[],这个Interger和int能不能自动转换?

写回答

1回答

liuyubobobo

2018-09-14

Java语法问题:)


int和Integer之间可以无碍的自由转换,但是Integer[]和int[]之间不可以。所以一个ArrayList<Integer> list不能通过list.toArray()直接赋值给int[],强转也不行。以下代码都是错误的:

ArrayList<Integer> list = new ArrayList<>();
for(int i = 1; i <= 6; i ++)
    list.add(i);
    
// int[] a = list.toArray(); // 错误:Object[]不能赋值给int[]
// int[] a = (Integer[])list.toArray(); // 错误:Integer[]不能赋值给int[]
// int[] a = (int[])list.toArray(); // 错误:Integer[]不能强制类型转化为int[]


如果不使用第三方库,你只能重新遍历一遍list,创建int[]类型:

int[] a = new int[list.size()];
for(int i = 0; i < list.size(); i ++)
    a[i] = list.get(i);


可以参考我的这个问题的Java代码:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0349-Intersection-of-Two-Arrays/java-0349/src/Solution.java


加油!:)

0
1
李爽爽爽爽
很清晰了,谢谢老师~
2018-09-14
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程