String和BigInteger的java内存效率
我有一个哈希表,它将元组映射到如下初始化的字符串:
HashMap<Tuple,String> marks = new HashMap<Tuple,String>();
我的问题是,如果我必须映射许多大字符串(最多30个字符),这会占用大量内存,因为我看到字符串需要36+4*characters
字节的内存。但是,这些字符串只能包含两个字符:h和t。因此,我认为我可以使用0
和1
来代替h
和t
,而不是存储字符串,而是存储某种类型的整数。我发现对于19位以上的数字,我无法处理基元类型,我唯一的解决方案是BigInteger对象类型。
我想问的是:BigInteger会比String更节省内存吗?
如果不是,我可以用不同的方式表示字符串以减少内存使用量吗
另外,字符串只包含h
和t
,因此字符串可以是hhhttttthhhh
。我可以将其表示为h3t5h4
,其中3,5,4是我看到某个字符的连续时间,但许多字符串可能是hthththt..
,这不是最佳的表示方式
# 1 楼答案
如果内存使用是您唯一关心的问题,那么java。util。位集是存储0和1序列的非常有效的方法。请注意,这会带来CPU消耗开销