gpt4 book ai didi

java - 如何使用最少的内存在哈希集中存储字符串

转载 作者:行者123 更新时间:2023-12-02 00:35:47 26 4
gpt4 key购买 nike

我有大量的字符串需要以非常紧凑的方式存储。目前我将字符串(32 个字符 a-f/0-9)存储在 HashSet<byte[]> 中。我只是调用.getBytes()得到这个。

我的问题是,是否有更好的方法来将这些数据存储在哈希集中?

最佳答案

一个HashSet<byte[]>无论如何都坏了,如 byte[]不覆盖 equals()hashCode() 。调用getBytes()不指定字符编码通常是一个坏主意 - 如果您只有十六进制数字可能没问题,但我仍然会尽可能避免它。

如果您的字符串始终是 32 个十六进制数字,则基本上是 16 个字节 - 您是否考虑过为此编写一个自定义集合,或者可能只是将它们封装在一个对象中?考虑到对于任何“普通”集合,您都必须有一个具有一些描述的对象来表示该元素,因此对象开销很难解决 - 尽管使用自定义集合您可以只拥有两个您保持同步的长整型数组。这将是您可能找到的最紧凑的表示形式,但只是一个带有两个 long 的对象。字段或四个 int田野将是我的起点。然后你可以覆盖 hashCodeequals实际上得到 HashSet处理值相等,而不仅仅是引用标识...并且每个元素使用的数据仍然少于 32 字节的字节数组。

关于java - 如何使用最少的内存在哈希集中存储字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com