在保留 Java 中的当前元素的同时调整数组大小?

新手上路,请多包涵

我一直在寻找一种在 Java 中调整数组大小的方法,但找不到 在保持当前元素的同时 调整数组大小的方法。

我发现例如 int[] newImage = new int[newWidth]; 之类的代码,但这会删除之前存储的元素。

我的代码基本上会这样做:每当添加一个新元素时,数组就会扩大 1 。我认为这可以通过动态编程来完成,但我不确定如何实现它。

原文由 Mihai Bujanca 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 560
2 个回答

您不能在 Java 中调整数组的大小。您需要:

  1. 创建一个所需大小的新数组,并将内容从原始数组复制到新数组,使用 java.lang.System.arraycopy(...);

  2. 使用 java.util.ArrayList<T> 类,当您需要扩大数组时,它会为您执行此操作。它很好地封装了您在问题中描述的内容。

  3. 使用 java.util.Arrays.copyOf(...) 方法返回一个更大的数组,其中包含原始数组的内容。

原文由 Steve McLeod 发布,翻译遵循 CC BY-SA 4.0 许可协议

不好,但有效:

     int[] a = {1, 2, 3};
    // make a one bigger
    a = Arrays.copyOf(a, a.length + 1);
    for (int i : a)
        System.out.println(i);

如前所述,使用 ArrayList

原文由 jlordo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题