11、内存高效利用:从数据结构到对象优化

内存高效利用:从数据结构到对象优化

1. 数据结构的性能与内存考量

在软件开发中,数据结构的选择对于性能和内存使用至关重要。例如,当应用程序需要在常量时间内进行成员查询( contains 方法)、拒绝重复元素( add 方法)以及移除任意元素( remove 方法)时,如果内存不是限制因素, HashSet 通常是一个不错的选择,尽管它会占用较大的内存空间。

对于 Memory2,其性能的时间复杂度与其他相关结构(如 Memory1 和 Reference)相同,具体如下表所示:
| 方法 | 时间复杂度 |
| — | — |
| getAmount | O(1) |
| connectTo | O(n) |
| addWater | O(n) |

虽然 ArrayList 的智能调整大小策略能保证均摊常量时间的插入操作,但在 Memory2 中并没有体现出明显优势。这是因为在 connectTo 方法中,虽然 ArrayList 的额外容量可能有助于插入元素而无需新的分配,但后续对旧组中所有元素的迭代操作使得前期的节省被覆盖,最终导致两种版本的 connectTo 方法的大 O 复杂度均为 O(n)。

Memory2 的一个优点是它完全自包含,不依赖 Java API 中的其他类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值