SparseArrays原始碼分析

2021-06-28 05:29:40 字數 456 閱讀 1093

在android開發中,如果要使用到以integer為key的map的時候,要優先使用sparsearrays。api文件上指明使用sparsearrays可以更高效的使用記憶體。通過閱讀原始碼,可以看出在sparsearrays的實現中,避免了自動裝箱機制,以及捨棄了entry來儲存key和value的匹配,而是分別使用了兩個陣列來儲存key和value。但是有利就有弊,這種實現方式就不得不放棄hashmap在查詢上面的效率。因為sparsearrays是通過二份查詢來實現搜尋的,自然比不上hashmap的查詢速率。

mgarbage的值來執行真正的刪除操作。這樣就避免了頻繁的對陣列進行刪除操作,極大了提高了效率。

最後需要說明的是,

sparsearrays會在陣列裝滿的情況下自動擴充容量,避免了對記憶體的使用浪費。如下面**所示:

if (pos >= mkeys.length)

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

python原始碼剖析 Python原始碼剖析

第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...