在Java中搜索键值对的最快,最有效的方法?

Moh*_*nde 10 java search key-value

免责声明:
这个问题并不是有争议的!

搜索键值对的最快且耗尽内存的方法是什么?我将以关键值存储项目,我需要快速访问它们.我应该使用SQLite数据库吗?一张地图?哈希表?一个HashMap?请给出使用任何搜索方法的一些优点/缺点.

Esk*_*sko 11

Map只要您的密钥的哈希函数有效,任何基于哈希的结构都是可行的方法.您可以使用值id:s作为查找的结果,以便在搜索期间节省内存.

如果您的数据已经在数据库中,那么您可以完全将此搜索留给RDBMS,毕竟它们是针对这些内容制作的.


Pét*_*rök 7

如果您的数据在内存中,Map通常是您的朋友 - 他们就是为此而设.

不要使用Hashtable.它比新的Map实现慢得多.因为它的方法是同步的,大部分时间都不需要(并且在需要时,有更好的选择 - 见下文).

在单线程上下文中,HashMap可能会没问题.

如果您需要线程安全,请使用ConcurrentHashMap.