1.Collection、Set和List的區別?
Collection對象之間沒有指定的順序,允許有重複元素和多個null元素對象;它是Set和List接口的父類,是一種最通用型的集合接口;
Set各個元素對象之間沒有指定的順序,不允許有重複元素,最多允許有一個null元素對象;
List各個元素對象之間有指定的順序,允許重複元素和多個null元素對象;
2.LinkedList,ArrayList,Vector,Stack,Queue區別?NodeList區別?
1)LinkedList鏈式訪問,以指針相連,適合於在鏈表中間需要頻繁進行插入和刪除操作。
2)ArrayList類似數組的形式,按照序號存儲,隨機訪問速度非常快。
3)Vector向量按照各元素序號存儲,數組大小可以動態增長,對於大容量數據存儲效率較高。
4)Stack堆棧,先進後出的數組。
這些類的對比與選擇:
如果涉及到堆棧隊列等操作,應該考慮List中的stack,queue
對於需要快速插入刪除元素,應該使用linkedlist
如果需要快速隨機訪問元素,應該選用arraylist
如果程序在單線程環境中,選用非同步類
如果在多線程中,選用同步類vector、stack和hashtable以及其子類。
幾個面試常見問題:
ArrayList和Vector有什麼區別?HashMap和HashTable有什麼區別?
Vector和HashTable是線程同步的(synchronized)。性能上,ArrayList和HashMap分別比Vector和Hashtable要好。
講解java集合的體系結構
A:List、Set、Map是這個集合體系中最主要的三個接口。
其中List和Set繼承自Collection接口。
Set不允許元素重複。HashSet和TreeSet是兩個主要的實現類。
List有序且允許元素重複。ArrayList、LinkedList和Vector是三個主要的實現類。
Map也屬於集合系統,但和Collection接口不同。Map是key對value的映射集合,其中key列就是一個集合。key不能重複,但是value可以重複。HashMap、TreeMap和Hashtable是三個主要的實現類。
SortedSet和SortedMap接口對元素按指定規則排序,SortedMap是對key列進行排序