我可以在Java哈希映射中存储50 MB的字符串类型键值对数据

时间:2018-03-09 16:42:27

标签: java string hashmap size

我想在Java哈希映射中存储大约500万个唯一字符串。键和值将是相同的字符串。字符串最大长度为15个字符(ASCII)。后来我想查找哈希映射中是否存在特定字符串。

我是否需要担心上述场景的内存大小问题。我猜它不需要超过75 mb到150 mb的内存。

提前致谢。

1 个答案:

答案 0 :(得分:2)

  

键和值将是相同的字符串。

当密钥和值相同时使用Map是多余的。您应该使用Set,尤其是如果您只打算使用contains

关于您对空间的关注,我们假设每个String的长度为15个字符。

假设您使用的是Java 9,拉丁语1个字符只需要一个byte,因此500万个唯一String个字符最多需要75_000_000个字节或{{1} }}

Java 8及更低版本使用75 MB支持String,因此在这种情况下你基本上需要两倍的内存。