我在代码中使用HashMultiMap。现在,我的代码定期得到一些比特。我存储在一个字符串中(例如String str =“0110011100”)。然后将其转换为int并将其存储为我的HashMultiMap键/值。是否可以将其存储为位而不是将其存储为int / string?这样可以节省地图的空间吗?实际上,字符串的位数多于字节且小于int(比如说14位)。所以,我希望通过将其存储为位来节省空间。感谢。
答案 0 :(得分:5)
Java有一个方便的BitSet
类,它可以存储几乎无限数量的位。当位数很大时,这种表示是有意义的。然而,当比特数相对较小时,该表示将使用比整数更多的空间。
如果位数限制为32,则使用BitSet
将会浪费。只有20位,您可以创建2^20
个数组,并避免完全存储密钥。但这算是过早优化。
解决此问题的更好方法是从最方便的表示开始,符合您的应用程序设计逻辑。当应用程序工作时,分析其内存使用情况以确定是否需要优化位集的表示形式;更有可能的是,你不需要对此做任何事情,至少不是马上做的。