在网上看大数据的面试题时基本上都是利用hashmap存储的,但是hashmap每次存储一个键值对时占多大内存呢?

解决方案 »

  1.   

    占多大内存,这不是取决于你存的东西吗? static class Entry<K,V> implements Map.Entry<K,V> {
            final K key;
            V value;
            Entry<K,V> next;
    .....
    }
      

  2.   

    比如键值都是string类型的时?
      

  3.   

    默认情况下的初始化会new Entry[16]这样一个数组。但是这16个都是空的,只有当我们put操作的时候才会分配空间。
    String也是通过char value[]保存的,大小也是不确定的。感觉知道这些关系就好,真要细算占用内存大小,还真瞎了,呵呵~
      

  4.   

    集合        性能       默认容量   空时的大小   10K条目的开销(没有考虑键和值的大小)   准确设置大小?   扩展算法HashSet     O(1)          16        144                 360K                               否           x2
    HashMap     O(1)          16        128                 360K                               否           x2
    Hashtable   O(1)          11        104                 360K                               否           x2+1
    LinkedList  O(n)          1         48                  240K                               是           +1
    ArrayList   O(n)          10        88                  40K                                否           x1.5
    StringBufferO(1)          16        72                  24                                 否           x2