Android 进阶技术汇总七: 数据结构和算法方案 选型汇总

本文探讨了Android开发中数据结构和算法的重要性,建议使用SparseArray和ArrayMap替代HashMap以节省内存,根据场景选择ArrayList或LinkedList,利用ConcurrentHashMap确保线程安全,并提倡理解并适时自定义数据结构。数据结构和算法的选择能显著影响性能,是提升编程技能的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:数据结构&算法选型 概述:

这里我们介绍数据结构和算法对性能的影响。

Java语言和Android源码里面有很多现成的轮子,我们在使用这些数据结构的时候,要知其所以然,从源码分析这些数据结构的原理和特点,选取最适合的拿来用。

1.使用SparseArray、ArrayMap代替HashMap

SparseArray指的是稀疏数组(Sparse array),所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容。

google推荐使用其代替HashMap, 其内部实现了压缩算法,可以进行矩阵压缩,大大减少了存储空间,节约内存。此外它的查找算法是二分法,提高了查找的效率。

数据量小于1000时,使用ArrayMap可以避免HashMap内存翻倍的问题,以int为key的HashMap可以用SparseArray代替,缺点是乱序查找添加删除效率不如HashMap


ArrayMap的使用并不能提升反应时间,却能够节省内存空间,当数据量很大时,使用ArrayMap,以时间换空间,防止出现OOM。Bundle实现使用了ArrayMap。

ArrayMap与HashMap有四点不同

a.储存方式不同

ArrayMap储存数据和HashMap不同,它没有Entry这个东西,而是用数组来保存数据

b.扩容操作不同

HashMap容量不足时,会新建double容量table返回,而ArrayMap采用copy方式,并且

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师训练营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值