java - ArrayList toArray() 方法的转换问题

标签 java arrays

在一个类中,我有一个构造函数,它看起来像:

Class(int x, int y, int[] moves);

在创建这些对象的其他类中,我将移动存储在 ArrayList 中。移动是数字。因此,当此类决定创建新对象时,它必须首先将此 ArrayList 转换为数组。所以我尝试了这样的事情:

new Object(0, 0, (int[])moves.toArray(int[moves.size()]);

但它不起作用。应该如何正确完成?

最佳答案

调用toArray()的结果在 ArrayList从不 int[] .你不能有 ArrayList<int>由于泛型的工作方式,在 Java 中。充其量是一个 Integer[] ,然后您需要对其进行转换。请注意,即使您可以从 Integer 转换至 int ,你不能转换Integer[]int[] .某些东西必须遍历这些值。

你可以直接这样做:

int[] values = new int[moves.size()];
for (int i = 0; i < values.length; i++) {
    values[i] = moves.get(i);
}

或者可以创建一个Integer[]然后从中转换 - 但为什么要复制两次?

关于java - ArrayList toArray() 方法的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483243/

相关文章:

java - 特定报价的艾玛迪斯自助服务 API 详细信息返回错误

java - 如何返回泛型类型的类

java - 在测试套件中设置和拆除 openCL 单元测试的正确方法?

javascript - 传播运算符将对象转换为数组

ruby - 从特定列中具有最大值的二维数组返回一行( ruby )

java - AssertJ 多维数组断言(深度等于)

c - 数组指针到数组的转换 - C/C++ 初学者

java - 迭代 HashMap 以将 JMenuItem 添加到 JMenu

c - 如何以指针格式访问结构内的数组?

java - Android 中 SparseArrayCompat 政策不断增长背后的基本原理是什么?