gpt4 book ai didi

java - 在java中向数组中间添加一个值而不替换现有值

转载 作者:行者123 更新时间:2023-12-01 12:31:33 27 4
gpt4 key购买 nike

我正在研究数组和Arraylists的区别。谁能澄清是否可以在不替换现有值的情况下将元素添加到数组的中间(就像 x.add() 对于 arraylist 所做的那样)?例如:如果我有一系列水果 [苹果、梨、桃子、油桃],并且我想插入李子 [苹果、梨、李子、桃子、油桃]。这可能吗?如何完成?

最佳答案

数组的大小是固定的,因此通常向数组添加元素很复杂。但在特殊情况下是可能的:

只有当数组尚未完全填满时才有可能。就像[苹果、梨、桃子、油桃、NULL、NULL]

如果当前大小(您必须记录在单独的位置)小于数组大小,则可以插入。

然后使用System.arraycopy()进行插入,首先将插入位置及上方的所有元素移动到右侧的一个位置。然后添加新元素。

结果将是[苹果、梨、李子、桃子、油桃、NULL]还剩下一个元素的位置。

Java 的 ArrayList 使用此技术来提供动态增长的数组。

在大多数情况下,最好使用 ArrayList 来完成此任务。在特殊情况下,您必须读取数百万个元素,这样的自管理“增长”数组的内存效率要高得多(例如,内存减少 4 倍,因为 ArrayList 始终使用对象,而数组也可以使用基元类型,并且它们需要更少的内存)。

注意:如果有人读到你的问题很纯粹,那么答案是“否”,因为你显示了一个完全填充的数组。添加更多元素的唯一机会是分配一个更大尺寸的新数组并复制旧元素和新元素。但随后你就有了一个新的数组。对该数组的访问必须进行封装,除了管理向其添加和获取值的类之外,没有人可以引用它。只需查看 ArrayList 的源代码即可获得想法。

关于java - 在java中向数组中间添加一个值而不替换现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894719/

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