我需要知道Java中的地图何时放大。为此,我需要一个公式来计算一个良好的初始容量。
在我的项目中,我需要一个包含大对象的大地图。因此,我希望通过指定适当的初始容量来防止对地图进行调整。通过反射,我观察了地图的行为。
package com.company;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map m = new H
对于我知道要插入1000个整数的HashSet,我应该使用什么初始容量来防止任何内部重建的需要?
起初,我认为我应该使用1000,但是读取接受initialCapacity参数的构造函数的描述,它是Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and default load factor (0.75).。
因此,如果我将容量设置为1000,那么当达到750个元素时,hashMap将调整大小?
另外,我假设需要一些“空间”来保证hashMap的有效性,所以
我想不出如何将我的哈希表的大小加倍。代码如下:
private void doubleLength () {
//Remember the old hash table array and allocate a new one 2 times as big
HashMap<K,V> resizedMap = new HashMap<K,V>(map.length * 2);
/*Traverse the old hash table adding each value to the new hash table.
Instead, add it to by
我和unordered_set一起工作。它有一个reserve函数,可以根据N要包含的元素的数量设置存储桶。然而,Ubuntu上的mpic++编译器抱怨说没有保留函数:class std::tr1::unordered_set<pair_int>’ has no member named ‘reserve’
我需要优化我的集合来容纳N元素,似乎max_load_factor是可用的,我怎么来一个基于N的?或者我可以以其他方式对其进行优化?
提前感谢
p/s/我看到了一些关于java的讨论,但没有关于c++ stl库的讨论
目前,我正在尝试使用Map的assocs方法,但无法找到如何使其在HashMap中工作。对于普通地图,下面的工作非常好。
import qualified Data.Map as M
test = M.fromList [("a", 1), ("b", 2)]
M.assocs test
然而,当我在HashMap上尝试同样的事情时,它就不起作用了。我尝试了几个关于导入的变体,但都失败了,但错误不同。然而奇怪的是,在地图上工作的大多数其他函数在下面的导入中工作得很好,例如,我在使用M.lookup时没有遇到任何问题。
import qualified Data.
升级到Ubuntu13.10之后,我的Haskell代码之一无法编译。以下代码在(至少) ghc-7.0.x下编译没有问题,但在ghc-7.6.2 (使用无序容器-0.2.2.1)下失败:
{-# LANGUAGE OverloadedStrings, DeriveDataTypeable #-}
import Data.Typeable
import Data.Data
import qualified Data.HashMap.Strict as HM
data Bar = Bar { bar :: String } deriving(Data, Typeable)
data Foo =
我试图理解,当超过占用的桶数或所有桶中的条目总数时,执行hashmap重新散列的操作。这意味着,如果16个桶中的12个(每个桶中有一个条目)满(考虑到默认的加载因子和初始容量),那么我们就知道在下一个条目上hashmap将被重新散列。但是,如果假设每个条目只占用3个桶(总共12个条目,但在使用的16个桶中只有3个),那么这种情况又如何呢?
因此,我试图通过创建最糟糕的哈希函数来复制这一点,该函数将所有条目放在一个桶中。
这是我的密码。
class X {
public Integer value;
public X(Integer value) {
supe
下面是我的put()实现的HashMap方法。它的10万个元素的运行速度约为1500毫秒,而Collections的HashMap仅运行8ms。
,是什么使性能有这么大的不同?
(我的哈希函数只是基于hashCode(),负载因子在0,6左右,所以它应该表现良好)
public boolean put(K key, V value)
{
if (size > cap*LOAD_FACTOR) expand();
int i;
for(i=hash(key);container[i] != null;i=(i+1) % cap)
{
i