gpt4 book ai didi

java - 在 Java 中增长数组的最节省内存的方法?

转载 作者:IT老高 更新时间:2023-10-28 20:25:01 24 4
gpt4 key购买 nike

我不太关心时间效率(操作会很少),而是内存效率:我可以在不将所有值暂时保存两次的情况下扩大数组吗?

有没有比创建一个新数组并复制所有值更有效的方法来增加一个大数组?比如,将它与一个新的连接起来?

将固定大小的数组存储在另一个数组中并重新分配/复制该顶级数组怎么样?这会保留实际值吗?

我知道 ArrayList,但我需要对访问数组进行大量控制,并且访问需要非常快。例如,我认为我更喜欢 a[i] 而不是 al.get(i)

我关心这个的主要原因是,有问题的数组(或许多这样的数组)很可能会占用足够大的主内存部分,以至于在丢弃原始数据之前创建双倍大小副本的常用策略可能行不通。这可能意味着我需要重新考虑整体策略(或提高我的硬件建议)。

最佳答案

动态调整“数组”或项目列表大小的最佳方法是使用 ArrayList .

Java 已经在该数据结构中内置了非常有效的大小调整算法。

但是,如果必须调整自己的数组大小,最好使用 System.arraycopy()Arrays.copyOf()

Arrays.copyOf() 最简单的用法是:

int[] oldArr;
int newArr = Arrays.copyOf(oldArr, oldArr.length * 2);

这将为您提供一个新数组,其中包含与旧数组相同的元素,但现在有多余的空间。

Arrays类一般有很多处理数组的好方法。

还有

确保每次添加元素时不只是将数组增加一个元素,这一点很重要。最好实现一些策略,您只需每隔一段时间调整一次数组的大小。 调整数组大小是一项代价高昂的操作。

关于java - 在 Java 中增长数组的最节省内存的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com