我有一个处理海量数据的程序。最好将对象存储在实现哈希的容器中,因为程序会在容器中不断查找对象。
最初的想法是使用HashMap,因为该容器的get和remove方法更适合我需要的用途。
但是,我发现HashMap的内存消耗非常大,这是一个主要问题,所以我认为切换到HashSet会更好,因为它每个元素只使用而不是,但是当我查看其实现时,我了解到它使用底层的HashMap!这意味着它不会节省任何内存!
所以这是我的问题:
此外,当我说“海量数据集”时,我指的是大约4 * 10 ^ 9个对象。
最初的想法是使用HashMap,因为该容器的get和remove方法更适合我需要的用途。
但是,我发现HashMap的内存消耗非常大,这是一个主要问题,所以我认为切换到HashSet会更好,因为它每个元素只使用而不是,但是当我查看其实现时,我了解到它使用底层的HashMap!这意味着它不会节省任何内存!
所以这是我的问题:
- 我的所有假设都正确吗?
- HashMap是否浪费内存?更具体地说,每个条目的开销是多少?
- HashSet是否像HashMap一样浪费内存?
- 还有其他基于哈希的容器可以显著减少内存消耗吗?
此外,当我说“海量数据集”时,我指的是大约4 * 10 ^ 9个对象。