哈希多地图空间节省问题

Arp*_*sss 3 java hashtable hashmap java-ee guava

我在我的代码中使用HashMultiMap.现在,我的代码定期得到一些比特.我存储在一个字符串中(例如String str ="0110011100").然后将其转换为int并将其存储为我的HashMultiMap键/值.是否可以将其存储为位而不是将其存储为int/string?这样可以节省地图的空间吗?实际上,字符串的位数多于字节且小于int(比如说14位).所以,我希望通过将其存储为位来节省空间.谢谢.

das*_*ght 5

Java有一个方便的BitSet类,可以存储几乎无限数量的位.当位数很大时,这种表示是有意义的.然而,当比特数相对较小时,该表示将使用比整数更多的空间.

如果位数限制为32,则使用BitSet将是浪费.只有20位,您可以创建一组数组2^20,并避免完全存储密钥.但这算是过早优化.

解决此问题的更好方法是从最方便的表示开始,从逻辑上适合您的应用程序设计.当应用程序工作时,分析其内存使用情况以确定是否需要优化位集的表示形式; 更可能的是,你不需要做任何事情,至少不是马上就做.