【发布时间】:2014-04-29 16:32:51
【问题描述】:
在 C/C++ 中,我们有realloc,它将有效地为现有集合分配额外的空间。 I guess it is sub linear (or even constant) in complexity.
有没有办法在 Java 中实现相同的功能?这是我看过的项目,
- 无法调整数组大小,
- 将一个数组复制到另一个更大的数组是线性复杂的。看了
System.arrayCopy和Arrays.copyOf -
ArrayList必须与上述第 2 点相同。
注意:我的要求是将一个非常大的数组扩展得更远。
【问题讨论】:
-
我认为没有,但是您可以通过使用摊销时间等因素和使用系统方法来更接近它。在这种情况下 System.arrayCopy 要快得多。
-
坦率地说,在 Java 中甚至不用担心它。
-
真的必须是一个大数组吗?除非您将它与其他东西(jni)连接,否则我可能会使用不同的结构——数组的链表或其他东西?你仍然可以将它包装在一个类中,让它与它交互,但是你喜欢 - 这一切都假设你正在谈论一个比你的 PC 内存多 1/3 的数组,如果它不是那么大的话我会就按照Louis说的去做,别管它,让java为你处理,Java一般会做很聪明的事情。
-
@BillK, & louis,我明白了。感谢您的投入。