一、Java中数据存储方式最底层的两种结构
1、数组:存储空间连续,寻址迅速,增删较慢。(代表:ArrayList)
2、链表:存储空间不连续,寻址慢,增删较快。(代表:LinkedList)
二、哈希表:较快(常量级)的查询速度,及相对较快的增删速度,所以很适合在海量数据的环境中使用。
1、哈希表是由数组+链表组成的(链表的数组,数组中存的是链表的头结点)
三、HashMap与HashTable的区别(相同存储机制)
1、HashMap是非线程安全的,HashTable是线程安全的。
2、HashMap的键和值都允许有null值存在,而HashTable则不行。
3、因为线程安全的问题,HashMap效率比HashTable的要高。
四、ConCurrentHashMap是HashMap的线程安全的实现,与传统HashTable相比,性能更好。
1、HashTable使用synchronized关键字锁住对象整体
2、ConCurrentHashMap基于lock操作的,这样的目的是保证同步的时候,锁住的不是整个对象。