zoukankan      html  css  js  c++  java
  • Java面试题(十一):HashMap和HashTable的区别

    1. HashMap和HashTable的区别

    区别:

    (1)HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全。

    (2)HashMap允许key和value为null,而HashTable不允许。

    底层实现:数组+链表实现

    jdk8开始链表高度达到8,数组长度超过64,链表转变为红黑树,元素以内部类Node节点存在。

    计算key的hash值,二次hash然后对数组长度取模,对应到数组下标。

    如果没有产生hash冲突(下标位置没有元素),则直接创建Node存入数组。

    如果发生hash冲突,先进行equals比较,相同则取代该元素,不同,则判断链表高度插入链表,链表高度达到8,并且数组长度到64则转变为红黑树,长度低于6则将红黑树转回链表。

    key为null,存在下标为0的位置。

  • 相关阅读:
    HDU 1874 畅通工程续
    HDU 1232 畅通工程
    HDU 1233 还是畅通工程
    HDU 1269 迷宫城堡
    洛谷 P1078 文化之旅
    POJ 3461 Oulipo
    最长链
    矩形面积求并
    有趣的数
    修复公路
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/14907559.html
Copyright © 2011-2022 走看看