gpt4 book ai didi

java - 复制数组或强制 ArrayList 指定初始大小。什么更有效?

转载 作者:行者123 更新时间:2023-11-30 07:02:16 25 4
gpt4 key购买 nike

我正在尝试创建一个可变值列表(非编程意义上的列表)。该列表的长度是预先确定的n

我的第一选择是使用初始化为n的数组。但由于数组不可变,如果我想添加另一个值,我唯一的选择是将数组复制到更大尺寸的数组中。我决定尝试使用 ArrayList 来代替。

然后,权衡是我无法将 ArrayList 设置为初始大小 n。但是,我可以向 ArrayList 添加值,因为它是可变的。所以我想知道创建一个数组然后在需要时将其复制到更大的数组中是否会更有效,或者创建一个 ArrayList 并“初始化”所有的 n 是否会更有效> 带 for 循环的值。

用什么比较好?

最佳答案

看看 ArrayList 的实现是否完全符合您的建议。它只是在需要时创建一个更大的数组,并复制小数组中的所有条目。

只要复制任务必须很少执行并且在不太大的数组上执行,这就非常有效。这就是为什么您应该始终尝试创建一个带有大小参数的 ArrayList,该大小参数大约是您期望列表增长到的大小(或更大一些)。通过这种方式,您可以最小化(或可能避免)用更大的数组替换内部数组以及所需的所有工作(数组副本)。

附注
如果您的数据属于基本数据类型,您可能希望避免装箱到包装器类型中的开销(内存和速度)。在这种情况下,ArrayList 不适合您,您可以为您需要的元素数据类型实现类似的机制,或者查看 www.ArrayList。我发现那里有很多类似的实现。

P.p.s
如果您不确定不同方法的性能,那么最好同时实现这两种方法并分析尽可能接近真实数据的测试数据的性能。

关于java - 复制数组或强制 ArrayList 指定初始大小。什么更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721684/

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