【问题标题】:what will be if put in hashmap more than capacity如果放入 hashmap 的容量超过容量会怎样
【发布时间】:2014-04-12 10:29:38
【问题描述】:
请告诉我,如果我放置的项目比指定的容量多,HashMap 中的旧项目会怎样?
例如:
HashMap<String, Bitmap> hashmap= new HashMap<String, Bitmap>(5);
我将容量设置为 5。
但是如果我将 10 个项目放到这个 HashMap 中,前 5 个项目和位图会怎样?
【问题讨论】:
标签:
java
android
arraylist
hashmap
capacity
【解决方案1】:
您只是指定了一个 initial 容量 - HashMap 无论如何都会根据需要增长,在内部复制内容。它仅作为优化提供,因此如果您知道您需要大容量,则可以从该容量开始,这样就不需要复制。
来自documentation:
HashMap 的实例有两个影响其性能的参数:初始容量和负载因子。容量是哈希表中的桶数,初始容量只是哈希表创建时的容量。负载因子是哈希表在其容量自动增加之前允许达到的程度的度量。当哈希表中的条目数超过负载因子和当前容量的乘积时,对哈希表进行重新哈希(即重建内部数据结构),使哈希表的桶数大约增加一倍。
...
如果要在一个 HashMap 实例中存储许多映射,那么创建具有足够大容量的映射将比让它根据需要执行自动重新散列以增加表来更有效地存储映射