Java 中的稀疏矩陣/數組
使用稀疏數組構建的哈希圖對於頻繁讀取的數據來說效率低下。實現稀疏數組最有效的方法是使用 Trie,它允許快速存取分佈有段的單一向量。
使用Trie
A Trie只需兩次只讀數組索引操作就可以確定表中是否存在某個元素,提供該元素的有效位置或指示其不存在。它還可以在後備儲存中為稀疏數組的預設值提供預設位置,從而無需對傳回的索引進行任何測試。
Vorteile of Tries
- 由於沒有複雜的雜湊函數和碰撞處理,比hashmap 快得多
- Java Hashmap 只能索引對象,而Tries 可以處理整數
- 內存效率高,作為整數對像不需要為每個散列源索引創建
使用Trie 實現稀疏數組的步驟
- 使用subrangeOf( 定義子範圍和偏移計算) 和positionOffsetOf()方法。
- 使用system.arraycompare()和system.arraycopy()進行高效率的陣列操作。
- 設定Trie結構及其內部成員。
- 提供重置、設定值(setAt())和取得值(getAt())的方法。
- 可以選擇實作一個compact()方法,透過偵測和合併公用子範圍來最佳化儲存。
透過嘗試實現稀疏數組的渦流
- 快速重新分配新子範圍
- 自動檢測和壓縮子範圍
- 公共子範圍的共享數據
- 共享子範圍的只讀數據
限制
- 當前實作具有靜態子範圍大小,限制了靈活性。
- 壓縮僅限於在沒有交錯的情況下偵測常見子範圍。
其他注意事項
- Colt 庫是良好,但未針對使用散列技術的稀疏矩陣進行最佳化。
- Trove 實作也是基於具有類似限制的雜湊技術。
- 與散列和行相比,嘗試提供卓越的速度和適度的空間消耗壓縮技術。
以上是嘗試如何增強 Java 中的稀疏矩陣效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!