1. List簡介
實際上有兩種List:一種是基本的ArrayList,其優點在于隨機訪問元素,另一種是LinkedList,它并不是為快速隨機訪問設計的,而是快速的插入或刪除。
ArrayList:由數組實現的List。允許對元素進行快速隨機訪問,但是向List中間插入與移除元素的速度很慢。
LinkedList :對順序訪問進行了優化,向List中間插入與刪除的開銷并不大。隨機訪問則相對較慢。
還具有下列方 法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 這些方法 (沒有在任何接口或基類中定義過)使得LinkedList可以當作堆棧、隊列和雙向隊列使用。
2. Set簡介
Set具有與Collection完全一樣的接口,因此沒有任何額外的功能。實際上Set就是Collection,只是行為不同。這是繼承與多態思想的典型應用:表現不同的行為。Set不保存重復的元素(至于如何判斷元素相同則較為負責) 。Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重復元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。Set與Collection有完全一樣的接口。Set接口不保證維護元素的次序。
HashSet:為快速查找設計的Set。存入HashSet的對象必須定義hashCode()。
TreeSet: 保存次序的Set, 底層為樹結構。使用它可以從Set中提取有序的序列。
3.List與Set區別
List,Set都是繼承自Collection接口;
List特點:元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set 的Object必須定義equals()方法 ,另外list支持for循環,也就是通過下標來遍歷,也可以用迭代器,但是set只能用迭代,因為他無序,無法用下標來取得想要的值。
Set和List對比:
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。
更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。