我想在Java哈希映射中存储大约500万个唯一字符串。键和值将是相同的字符串。字符串最大长度为15个字符(ASCII)。后来我想查找哈希映射中是否存在特定字符串。
我是否需要担心上述场景的内存大小问题。我猜它不需要超过75 mb到150 mb的内存。
提前致谢。
答案 0 :(得分:2)
键和值将是相同的字符串。
当密钥和值相同时使用Map
是多余的。您应该使用Set
,尤其是如果您只打算使用contains
。
关于您对空间的关注,我们假设每个String
的长度为15个字符。
假设您使用的是Java 9,拉丁语1个字符只需要一个byte
,因此500万个唯一String
个字符最多需要75_000_000
个字节或{{1} }}
Java 8及更低版本使用75 MB
支持String
,因此在这种情况下你基本上需要两倍的内存。