以前写过这个知识点,如今有点忘却了,现在重写拾起来,因为这个问题在面试出现的机率太高了,不得不整理出来。

类的来源如图: 

      Collection 

├List 

│├LinkedList 

│├ArrayList 

│└Vector 

│ └Stack 

└Set 

Map 

├Hashtable 

├HashMap 

└WeakHashMap


具体分析:

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collection的"子接口",如:List和Set。 

注意:Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射。

List特点:元素有放入顺序,元素可重复 

Map特点:元素按键值对存储,无放入顺序 

Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) 

List接口有三个实现类:LinkedList,ArrayList,Vector 

LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢 

ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 

Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet 

SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) 

Query接口有一个实现类:LinkList 

Map接口有三个实现类:HashMap,HashTable,LinkeHashMap 

  HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null 

SortedMap有一个实现类:TreeMap 

其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对 

set 一般无序不重复.map kv 结构 list 有序