所謂集合就是一個容器裏面能夠放各類元素,容器提供了增、刪、改、查這幾個功能。算法
容器有List和Set還有Map這三大類。數組
LIst中有ArrayList和LinkedList,ArrayList底層是個長度可變的數組,因此它有索引,能夠經過普通for循環,加強for循環,以及Iterator來遍歷。性能
LinkedList底層按照鏈式法則來存放數據,能夠經過加強for循環和Iterator來遍歷。對象
當List類型的集合在使用Iterator和for循環遍歷時不能在遍歷的同時增長集合元素,在使用Iterator時不能用List自帶的remove方法移除元素,只能使用Iterator的remove方法來移除元素。索引
List類型的集合是有序的而且裏面的元素能夠重複。rem
HashSet中的元素是無序的而且不能夠重複,HashSet會使用equals方法來判斷是否有重複的元素,若是有須要的話能夠改寫equals方法,但隨之必須再改寫HashCode,由於當對象equals相等時其HashCode也確定相等。hash
HashSet輸出值的順序與輸入時的順序不一直,這是由於存元素的時候使用了Hash算法,當輸出元素時輸出元素的順序按照hash算法得出來的前後順序而輸出。for循環
HashMap是以key-value的形式存放元素的,當你要找一個元素時只要找到他的key就能夠找到它的value了。HashMap也是使用hash算法的,因此輸出元素時的順序與輸入時的順序不同。容器
當你將key原來鏈接的value改掉時那麼以後key對應的就是新的value值了。List
因爲底層存儲方式的不一樣,形成了性能上的差別。
Array讀快改慢
Linked改快讀慢
Hash二者之間