Hash算法和HashMap hashmap和hashtable的区别 fail-fast概念

重点是这:hashMap:https://blog.csdn.net/u012512634/article/details/72

hash表:https://blog.csdn.net/xiaoxik/article/details/74926090

hash算法:https://blog.csdn.net/sinat_31011315/article/details/78699655

其中要注意的几个点:

如何获取到存入下标index?:

当容量不够的时候,会进行扩容:

 

arraylist每次是扩容1.5倍,HashMap是2倍

arraylist中实现的容量增加的方法;

 

 

当发生地址冲突的时候(不是容量不够的时候):

hashMap的源码:

 

 HashMap和HashTable比较:

不同:

1.HashMap支持null值和null键的,而HashTable则会抛出空指针。原因是类内部做了处理。

2.HashMap不是线程安全的,而HashTable是线程安全的。因为HashTable中的方法的是用Synchronize同步过的

 如果HashMap想进行同步的话,可以用ConcurrentHashMap

3.初始化的hashMap长度是16,而hashTable初始化长度是11;

相同:HashTable除了和HashMap有上述不同,其他基本相同,比如都用哈希表来Entry对象(含键值的对象)

fail-fast:指的就是多个线程在arraylist等非线程安全的集合中进行增删等操作时,造成的异常;

猜你喜欢

转载自blog.csdn.net/emmmsuperdan/article/details/81530813