完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在Android中,替代HashMap有如下方案:
当元素数量不太大时(数量小于1000),使用ArrayMap,对应鸿蒙的ohos.utils.LightweightMap 当key为int,使用稀疏数组SparseArray,可避免key自动装箱,对应鸿蒙的ohos.utils.PlainArray 当key和val都为int,使用SparseIntArray,可避免key和val自动装箱,对应鸿蒙的ohos.utils.PlainIntArray |
|
|
|
可以自己实现一个
public class SparseRawArray private final LinkedHashMap private Iterator private int mIndex; private boolean mIndexDirty; private K mCurrentKey; public SparseRawArray() { mMap = new LinkedHashMap<>(); resetIndex(); } public E get(K key) { return get(key, null); } public E get(K key, E valueIfKeyNotFound) { E value = mMap.get(key); return value != null ? value : valueIfKeyNotFound; } public void delete(K key) { mMap.remove(key); mIndexDirty = true; } public void remove(K key) { delete(key); } public void put(K key, E value) { mMap.put(key, value); mIndexDirty = true; } public int size() { return mMap.size(); } public K keyAt(int index, K keyIfIndexNotExist) { if (mIndex == index && !mIndexDirty) { return mCurrentKey; } if (mIndexDirty || mIndex > index) { resetIndex(); } while (mIterator.hasNext()) { if (++mIndex == index) { mCurrentKey = mIterator.next(); return mCurrentKey; } } mIndexDirty = true; return keyIfIndexNotExist; } public void clear() { mMap.clear(); mIndexDirty = true; } private void resetIndex() { mIndex = -1; mIterator = mMap.keySet().iterator(); mCurrentKey = null; mIndexDirty = false; } } public class SparseArray public int keyAt(int index) { return keyAt(index, -1); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
掰掉卫星电话的外置天线,华为“天才少年”助力 Mate 捅破天
5279 浏览 0 评论
1203 浏览 2 评论
华秋电子 | 电子发烧友亮相OpenHarmony人才生态大会2024
2298 浏览 0 评论
OpenHarmony有 支持的分布式数据库吗? 自动同步各节点数据?
1637 浏览 0 评论
OpenHarmony人才生态大会南向生态社区发展论坛在武汉圆满举办
1241 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:16 , Processed in 0.701392 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号