有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

String和BigInteger的java内存效率

我有一个哈希表,它将元组映射到如下初始化的字符串:

HashMap<Tuple,String> marks = new HashMap<Tuple,String>();

我的问题是,如果我必须映射许多大字符串(最多30个字符),这会占用大量内存,因为我看到字符串需要36+4*characters字节的内存。但是,这些字符串只能包含两个字符:h和t。因此,我认为我可以使用01来代替ht,而不是存储字符串,而是存储某种类型的整数。我发现对于19位以上的数字,我无法处理基元类型,我唯一的解决方案是BigInteger对象类型。 我想问的是:BigInteger会比String更节省内存吗? 如果不是,我可以用不同的方式表示字符串以减少内存使用量吗

另外,字符串只包含ht,因此字符串可以是hhhttttthhhh。我可以将其表示为h3t5h4,其中3,5,4是我看到某个字符的连续时间,但许多字符串可能是hthththt..,这不是最佳的表示方式


共 (1) 个答案

  1. # 1 楼答案

    如果内存使用是您唯一关心的问题,那么java。util。位集是存储0和1序列的非常有效的方法。请注意,这会带来CPU消耗开销