A Hashmap中有10个数,B Hashmap中有10万个数。现在从A和B中取同一个数(假设都存在的),问哪个查询出来耗时更少,为什么? 耗时差不多,应为是hashmap,key是按照hash算法(摘要算法)保存的,不需要遍历 因为是hash查找。hash存储有一定的规则,存好后的数据,不用像list那样去遍历,会根据key来计算hash值存的地址。然后根据地址直接拿数据。不管你一个数据,还是十万数据都是一样。 HashMap取值的效率与数量无关,HashMap读取性能主要取决于放入HashMap中的key对象的hashCode方法的实现,即此方法返回值导致的Hash冲突的比例,冲突越多,性能越差 如果就单纯取值的话,两者的时间花费几乎没什么差别;如果考虑到冲突的话,10W的平均取值时间应该稍长一些
|