簡體   English   中英

Java 中的稀疏 integer 數組

[英]Sparse integer array in Java

正如標題所說,有沒有辦法讓我在Java中有一個稀疏的int數組? 類似於int[]Integer[] ,但數組中的每個元素在實際寫入非零值之前不應占用空間。 這是因為我想盡可能地優化 memory(因為數組中的大部分元素將為 0/空),但可以選擇按索引查找,就像標准數組一樣。 在問這個問題之前,我已經考慮了以下選項:

  • 我知道諸如https://developer.android.com/reference/android/util/SparseIntArray之類的選項。 問題是它們似乎是特定於 Android 的,我找不到桌面版。
  • 我的理解是int[]Integer[]不是稀疏的 arrays; 即使我將Integer數組的元素保留為null ,它仍然會占用空間,這對我來說不起作用。
  • 另一種選擇是使用哈希圖。 雖然這有效,但它確實占用了非微不足道的空間(在這種特殊情況下這是一個問題)。
  • 鏈接列表或 arraylist(例如Pairs )之類的選項將不起作用,因為這樣查找很困難。

你的collections有多大? 請注意Integer (盒裝引用類型)增加了顯着的 memory 開銷。 標准的 Java 集合類型( Map , List )只支持引用類型。

GNU Trove使用原始類型實現了大部分 collections,這增加了緩存局部性並減少了 memory 消耗。 也許這對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM