Java中的稀疏整数数组[已关闭]

bd1hkmkf  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(185)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
正如标题所说,有没有一种方法可以让我在Java中拥有一个稀疏的int数组?类似于int[]Integer[],但数组中的每个元素都不应该占用空间,直到它实际上被写入了一个非零值。这是因为我想尽可能优化内存(因为数组中的大多数元素都是0/空),但可以选择按索引查找,就像标准数组一样。在问这个问题之前,我考虑了以下选项:

  • 我知道像https://developer.android.com/reference/android/util/SparseIntArray这样的选项,问题是它们似乎是Android专用的,我找不到桌面版的。
  • 我的理解是int[]Integer[]不是稀疏数组;即使我将Integer数组的元素保留为null,它仍然会占用空间,这对我来说是行不通的。
  • 另一种选择是使用散列表,虽然这样做有效,但它占用的空间量并不小(这在本例中是一个问题)。
  • 像链表或数组列表(例如Pairs)这样的选项将不起作用,因为这样很难进行查找。
qv7cva1a

qv7cva1a1#

您的集合有多大?请注意Integer(装箱引用类型)会增加大量内存开销。标准Java集合类型(MapList)只支持引用类型。

GNU Trove使用基元类型实现大多数集合,这增加了缓存局部性并减少了内存消耗。

相关问题