我偶然發現了一些HashMap<Integer,HashMap<Integer, String>>用于存盤通常具有 > 100.000 行和 10 列的大型 Excel 表格的代碼。列和行都是連續整數。我肯定會使用類似 a 的東西ArrayList<ArrayList<String>>。
那么使用HashMap? 您是否看到任何嚴重的性能問題(無論是記憶體還是運行時)?
uj5u.com熱心網友回復:
我覺得不得不提供一個答案,但應該歸功于@Kayaman,他首先看到了明顯的問題并發表了評論。
在一般情況下,您正在尋找的重要潛在優勢是速度、靈活性和節省空間。
假設您有一個 3x3 范圍的 9 個單元格,左上角位于單元格 A1,然后在 ZZ49 處添加一個新單元格。對于使用線性記憶體分配的任何資料結構,您突然需要將記憶體增加幾個數量級(約 30,000 個新的空單元格),可能(取決于資料結構)重新排列已存盤的單元格并初始化大量永遠不會-be-used nulls(語言/庫實作將具有不同的實作細節,但具有類似的浪費缺點)。
Excel 本身會保持陣列/陣列串列的大小以覆寫每個作業表/范圍中的每個單元格嗎?不太可能。在您的示例中,單元格范圍可能不是稀疏填充的,但原則上,通常電子表格中包含資料的單元格數量是允許的最大矩形區域的一小部分。因此,散列映射(或“多維散列映射”)在解決這種映射到 Excel 問題的一般方法中并不是不合理的資料結構選擇,盡管您可能有充分的理由在特定應用程式中進行不同的選擇。
uj5u.com熱心網友回復:
使用表中的屬性宣告一個類,例如:
public class anyClass(){
int grossValue;
int netValue;
}
所以你可以將這些資料存盤在一個串列中
ArrayList<AnyClass>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355012.html
下一篇:有效地添加兩個不同大小的一維陣列
