完善资料让更多小伙伴认识你,还能领取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); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
471 浏览 0 评论
744 浏览 0 评论
651 浏览 0 评论
线上逛展 | 沉浸探索第三届OpenHarmony技术大会五大展区
621 浏览 0 评论
915 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 04:13 , Processed in 0.656395 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号