JavaCore-F2F

集合

常用Java集合类(主要是Map/List以及对应的线程安全的集合类,比如HashMap/ConcurrentHashMap/HashTable, ArrayList/CopyOnWriteList/Vector)

说一下list和Map吧?

list和map都是接口,像实现list的接口有Arraylist,linkedlist,vector;Arraylist底层是基于数组实现的,所以说在做查找的时候,它的效率比价高,linkedList底层是基于双向链表实现的,如果涉及到增删改,或者Update的操作它的效率相对来说高一些。  
以上的这两个都不是线程安全的,而Vector是线程安全的单列集合,他的底层加了一个sync同步大锁,效率比较低,所以说现在已经被官方淘汰。    
map是接口,实现他的类有:hashmap,hashtable,还有juc包下面的concurrentHashmap,Hashmap在JDK7下面是基于数组+链表,然后再jdk8下面新加了红黑树结构。  
另外HashMap没有考虑同步,所以他是线程不安全的,HashTable使用了Synchronized关键字,所以是线程安全的。 

HashMap和Hashtable的区别?

1,Hashtable继承自Dictionary类,HashMap是Java1.2引进的Map 接口的一个实现 

2,Hashtable的方法是Synchronize的,而HashMap不是

3,HashMap可以让你将空值作为一个表的条目的key或value,Hashtable不可以  

4,Hashtable已经被弃用了,一方面他的父类Dictionary已经被官方弃用了,另一方面他直接加了一把同步锁,导致效率过低,他的子类HashTable也自然被弃用了

谈一下HashMap的底层原理

猜你喜欢

转载自blog.csdn.net/YangCheney/article/details/106708749
F
f2