面试官向我提出了一个问题,我需要将数组转换为列表,并基本上打印相反的内容,我在 JAVA 17 中尝试了两种解决方案,你们能让我知道为什么会发生这些吗?有没有一种简单易行的方法来代替暴力方法?
int m[] = {1,2,3,4,5,6,7,8};
试用1 我尝试将数组转换为列表,反向使用 Collections
int m[] = {1,2,3,4,5,6,7,8};
List<Integer> tmp = Arrays.asList(m);
error :- Incompatible types. Found: java.util.List<int[]>, required: java.util.List<java.lang.Integer>
试用2
int m[] = {1,2,3,4,5,6,7,8};
Collections.reverse(Arrays.asList(m));
for (int each : m)
System.out.print(" "+each);
这个打印
1 2 3 4 5 6 7 8
很奇怪(我假设Collections.reverse正在工作,但它将反转列表存储在堆中的其他位置而不是数组所在的位置,如果我错了,请纠正我)。
您正在声明一个
int
数组,而 List
元素的类型为 Integer
。
您可以通过声明一个
Integer
数组来解决这个问题:
整数 m[] = {1,2,3,4,5,6,7,8};
在试验 2 中,
Arrays.asList(m)
创建单个 List
元素的 int[]
。