List介面 Set介面和Map介面

2021-09-25 19:17:03 字數 1757 閱讀 6633

1、list和set介面自collection介面,而map不是繼承的collection介面

collection表示一組物件,這些物件也稱為collection的元素;一些 collection允許有重複的元素,而另一些則不允許;一些collection是有序的,而另一些則是無序的;jdk中不提供此介面的任何直接實 現,它提供更具體的子介面(如 set 和 list)實現;map沒有繼承collection介面,map提供key到value的對映;乙個map中不能包含相同key,每個key只能對映乙個value;map介面提供3種集合的檢視,map的內容可以被當做一組key集合,一組value集合,或者一組key-value對映;
2.、list介面
元素有放入順序,元素可重複

list介面有三個實現類:linkedlist,arraylist,vector 

arraylist和vector的區別:arraylist是非執行緒安全的,效率高;vector是基於執行緒安全的,效率低 

元素有放入順序,元素可重複
list是一種有序的collection,可以通過索引訪問集合中的資料,list比collection多了10個方法,主要是有關索引的方法。

1).所有的索引返回的方法都有可能丟擲乙個indexoutofbound***ception異常

2).sublist(int fromindex, int toindex)返回的是包括fromindex,不包括toindex的檢視,該列表的size()=toindex-fromindex。

3、set介面
元素無放入順序,元素不可重複(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的,其位置其實是固定的)
set介面有兩個實現類:hashset(底層由hashmap實現),linkedhashset
sortedset介面有乙個實現類:treeset(底層由平衡二叉樹實現)
query介面有乙個實現類:linklist
set具有與collection完全一樣的介面,因此沒有任何額外的功能,不像前面有兩個不同的list。實際上set就是collection,只是行為不同。(這是繼承與多型思想的典型應用:表現不同的行為。)

set不儲存重複的元素(至於如何判斷元素相同則較為複雜)

set : 存入set的每個元素都必須是唯一的,因為set不儲存重複元素。加入set的元素必須定義equals()方法以確保物件的唯一性。set與collection有完全一樣的介面。set介面不保證維護元素的次序。
hashset : 為快速查詢設計的set。存入hashset的物件必須定義hashcode()。
treeset : 儲存次序的set, 底層為樹結構。使用它可以從set中提取有序的序列。
linkedhashset : 具有hashset的查詢速度,且內部使用鍊錶維護元素的順序(插入的次序)。於是在使用迭代器遍歷set時,結果會按元素插入的次序顯示。
4、map介面
以鍵值對的方式出現的
map介面有三個實現類:hashmap,hashtable,linkehashmap 

hashmap非執行緒安全,高效,支援null;

hashtable執行緒安全,低效,不支援null 

sortedmap有乙個實現類:treemap 

List介面和Set介面及其常用實現類概述

list 有序的 collection 也稱為序列 此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引 在列表中的位置 訪問元素,並搜尋列表中的元素。list介面 有序的 允許多個null元素 具體實現常用的有arraylist vector linkedlis...

Collection介面,Map介面

1.collection是集合類的頂級介面,直接繼承介面喲list和set。list介面是有序的,元素可重複,有索引 其下有 arraylist 底層資料結構使用的是陣列結構,執行緒不同步,增刪慢,查詢快 linkendlist 使用雙向鍊錶結構,執行緒不同步,增刪快,查詢慢 vector 使用資料...

Collection子介面 Set介面

1.儲存的資料特點 無序的 不可重複的元素 具體的以hashset為例說明 無序性 不等於隨機性。儲存的資料在底層陣列中並非照陣列索引的順序新增,而是根據資料的雜湊值決定的。不可重複性 保證新增的元素照equals 判斷時,不能返回true.即 相同的元素只能新增乙個。2.元素新增過程 以hashs...