這篇文章主要講解了“ArrayList,Vector, LinkedList的特性有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ArrayList,Vector, LinkedList的特性有哪些”吧!
首先,List 與 Set 具有相似性,它們都是單列元素的集合,所 以,它們有一個功共同的父接口,叫 Collection。Set 里面不 允許有重復的元素,所謂重復,即不能有兩個相等(注意,不 是僅僅是相同)的對象 ,即假設 Set 集合中有了一個 A 對象, 現在我要向 Set 集合再存入一個 B 對象,但 B 對象與 A 對象 equals 相等,則 B 對象存儲不進去,所以,Set 集合的 add 方 法有一個 boolean 的返回值,當集合中沒有某個元素,此時 add 方法可成功加入該元素時,則返回 true,當集合含有與某 個元素 equals 相等的元素時,此時 add 方法無法加入該元素, 返回結果為 false。Set 取元素時,沒法說取第幾個,只能以 Iterator 接口取得所有的元素,再逐一遍歷各個元素。
List 表示有先后順序的集合, 注意,不是那種按年齡、按大小、按價格之類的排序。當我們多次調用 add(Obj e)方法時, 每次加入的對象就像火車站買票有排隊順序一樣,按先來后到 的順序排序。有時候,也可以插隊,即調用add(intindex,Obj e)方法,就可以指定當前對象在集合中的存放位置。一個對象可以被反復存儲進 List 中,每調用一次 add 方 法,這個對象就被插入進集合中一次,其實,并不是把這個對 象本身存儲進了集合中,而是在集合中用一個索引變量指向這個對象,當這個對象被 add 多次時,即相當于集合中有多個索引指向了這個對象,如圖 x 所示。List 除了可以以 Iterator接口取得所有的元素,再逐一遍歷各個元素之外,還可以調用get(index i)來明確說明取第幾個。
Map與 List 和 Set 不同,它是雙列的集合,其中有 put 方法,定義如下:put(obj key,obj value),每次存儲時,要存儲一對 key/value,不能存儲重復的 key,這個重復的規則也是按equals 比較相等。取則可以根據 key 獲得相應的 value,即get(Object key)返回值為 key 所對應的 value。另外,也可以 獲得所有的 key 的結合,還可以獲得所有的 value 的結合,還 可以獲得 key 和 value 組合成的 Map.Entry 對象的集合。
List 以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存 key-value 值,value 可多值。
HashSet 按照 hashcode 值的某種運算方式進行存儲,而不是直接按 hashCode 值的大小進行存儲。例如,"abc" ---> 78,
"def" ---> 62,"xyz" ---> 65 在 hashSet 中的存儲順序不是62,65,78,這些問題感謝以前一個叫崔健的學員提出,最后通過查看源代碼給他解釋清楚,看本次培訓學員當中有多少能看懂源碼。LinkedHashSet 按插入的順序存儲,那被存儲對象的hashcode 方法還有什么作用呢?學員想!hashset 集合比較兩個對象是否相等,首先看 hashcode 方法是否相等,然后看 equals 方法是否相等。new 兩個 Student 插入到 HashSet 中,看 HashSet 的 size,實現 hashcode 和 equals 方法后再看 size。
同一個對象可以在 Vector 中加入多次。往集合里面加元素,相當于集合里用一根繩子連接到了目標對象。往 HashSet 中卻加不了多次的。
感謝各位的閱讀,以上就是“ArrayList,Vector, LinkedList的特性有哪些”的內容了,經過本文的學習后,相信大家對ArrayList,Vector, LinkedList的特性有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。