哈希多重映射空间节省问题

3

我在我的代码中使用HashMultiMap。现在,我的代码会定期获取一些位。我将这些位存储在字符串中(例如,String str = "0110011100")。然后将其转换为int并将其存储为我的HashMultiMap键/值。是否可以将其存储为位而不是存储为int/字符串?这种方式是否可以节省地图的空间?实际上,该字符串比字节多但比int少(例如14个位)。因此,我想通过将其存储为位来节省空间。谢谢。


你计划存储的最高位数是多少?我假设它始终小于32,因为该值适合于“int”,但它也小于16吗? - Sergey Kalinichenko
@dasblinkenlight,没错。它始终小于32位且固定(最初为20位)。 - Arpssss
如果你关心内存存储,那么HashMultimap是最不用担心的 -- 如果你能避免使用String,那么首先使用它本身就是一种失败模式。 - Louis Wasserman
1个回答

5
Java有一个方便的BitSet类,可以存储几乎无限数量的位。当位数很大时,这种表示是有意义的。然而,当位数相对较小时,此表示将使用比整数更多的空间。
如果位数限制为32,则使用BitSet将是浪费的。只有20个位,您就可以潜在地制作一个2^20集合的数组,并避免完全存储键。但这被视为过度优化。
解决此问题的更好方法是从最方便的表示开始,即“在逻辑上适合您的应用程序设计”。当应用程序工作时,分析其内存使用情况,以确定是否需要优化位集的表示方式;很可能您不需要立即采取任何措施。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接