专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
目录
相关文章推荐
stormzhang  ·  打工人维权,难吗? ·  3 天前  
鸿洋  ·  Android多渠道打包指南 ·  3 天前  
今天看啥  ›  专栏  ›  鸿洋

面试题:为什么使用 Bundle 而不使用 HashMap

鸿洋  · 公众号  · android  · 2024-09-05 09:00

主要观点总结

文章主要介绍了在Android中为什么使用Bundle而不使用HashMap,以及Parcelable和Serializable的区别。文章从Bundle相比HashMap占用更少内存、系统限制、Parcelable比Serializable性能更好以及如何选择使用Parcelable和Serializable等方面进行了详细阐述。

关键观点总结

关键观点1: Bundle相比HashMap的优势

Bundle内部由ArrayMap实现,相比HashMap占用更少内存,适合小数据量操作。ArrayMap和HashMap在Android中都是常用的键值对数据结构。

关键观点2: 系统的限制

Activity之间通过Intent传递数据,使用Bundle来传递数据可以保证更快的速度和更少的内存占用,因为系统的Binder事务缓冲区大小限定在1MB,不能传递大数据。

关键观点3: Parcelable和Serializable的区别

HashMap使用Serializable进行序列化,而Bundle则是使用Parcelable进行序列化。Serializable是Java原生序列化的方式,性能较差,需要手动指定serialVersionUID。Parcelable是为了解决Android中跨进程通信性能差的问题,写入和读取时采用自定义序列化存储的方式,比Serializable快很多。

关键观点4: 如何选择使用Parcelable和Serializable

Serializable适用于数据持久化存储,而Parcelable适用于Android应用程序在内存间数据传输。如果数据需要持久化存储,推荐使用Serializable;如果数据只是在内存环境中传递,推荐使用Parcelable。


文章预览

本文作者 作者: 程序员DHL 链接: https://juejin.cn/post/7408379631093219379 本文由作者授权发布。 Bundle 内部是由 ArrayMap 实现的,ArrayMap 和 HashMap 是 Android 中常用的两种键值对数据结构,关于它们的区别可以前往微信小程序「猿面试」中查看 「ArrayMap和HashMap的区别」。 这篇文章我们一起来看一下在 Android 中为什么使用 Bundle 而不使用 HashMap。 1 Bundle 相比 HashMap 占用更少内存 Bundle 内部是由 ArrayMap 实现的,ArrayMap 的内部实现是两个数组,一个记录所有 key 的 hashcode 值组成的数组,是从小到大的排序方式,一个存放 key-value。 内部使用二分法进行查找,时间复杂度为 O (log n),但由于数组操作(如插入、删除)需要移动元素,插入和删除的时间复杂度为 O (n),因此只适合于小数据量操作。 ArrayMap 满足条件会扩容后的大小为原来的 1.5 倍,并且有容量收缩机制, ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览