在Java中,哪个是字典数据结构最推荐的类?

sna*_*ile 3 java dictionary map

我需要一个数据结构来存储应该由id检索的用户.我注意到有几个类实现了Map接口.哪一个应该是我的默认选择?他们似乎都与我相当.

Jac*_*ack 9

可能这取决于您计划拥有多少用户,以及您是否需要订购或仅按ID获取单个商品.

HashMap使用哈希码来存储东西,这样你就有了恒定的时间putget操作,但是项目总是无序的.

TreeMap而是使用二叉树,因此您有基本操作的log(n)时间,但项目在树中保持有序.

我会使用,HashMap因为它更简单(记得给它一个合适的初始容量).请记住,如果您打算在多个线程中使用它们,则默认情况下这些数据结构不会同步ConcurrentHashMap.

中间方法是LinkedHashMap使用与HashMap(hashcode和equals方法)相同的结构,但它也保留了插入到地图中的双重链接元素列表(保持插入顺序).这种混合物已订购物品(按照插入顺序排列,如评论所示......准确但我已经指明了这一点)没有性能损失TreeMap.


Jer*_*ome 6

没有并发:使用java.util.HashMap

并发:使用java.util.concurrent.ConcurrentHashMap

如果要对迭代器使用的顺序进行某些控制,请使用TreeMapLinkedHashMap.