java - 动态生成基元并将其存储在 ArrayList 中

标签 java arraylist

我编写了一个函数来在两个数组之间插入步骤,但是直到插值完成后才知道所需的步骤数。

这是我的功能:

int[][] interpolate(int[] source, int[] goal){

    int[] current = new int[source.length];
    ArrayList<int[]> steps = new ArrayList<int[]>();

    while(/* condition */){
        // Change value of current

        steps.add(current);
    }
    int[][] stepsArr = steps.toArray(new int[0][0]);
    return stepsArr;
}

我尝试使用 ArrayList 来存储生成状态,但发现 ArrayList 仅存储指针,因此最终的 ArrayList 包含指向同一对象的多个指针(当前的最终值)。

有什么方法可以动态生成 int[] 实例来存储步骤,或者以其他方式生成整数的二维数组?

最佳答案

您的问题与您对原始类型的使用无关,而是与您对数组的处理有关。通过添加当前数组的副本来修复您的代码,它将正常工作:

steps.add(Arrays.copyOf(current));

关于java - 动态生成基元并将其存储在 ArrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25545473/

相关文章:

c# - 删除 ArrayList 中所有出现的项目

String 类的 Java 1.6 方法不适用于所有字符

java - PredictRequest<Prediction> 类型中的方法 withVersion(ModelVersion) 不适用于参数 (String)

java - 无法打印 ArrayList 对象中特定索引处的内容

java - 删除自定义对象的 ArrayList 中的重复项

java - 像 xml schema java 一样对列表进行排序

java - 使用数组列表提取数据时尝试在空对象引用上调用虚拟方法 'java.lang.String'

java - 使用 <h :head> instead of <head> 时不会应用自定义 CSS

java - Autowiring 在 Spring 中不起作用

java - 如何在不运行服务器的情况下查看thymeleaf模板