容器(集合)詳解

2021-09-25 13:01:38 字數 3124 閱讀 2126

集合與陣列之間的聯絡與區別

同:都是用來儲存資料的,部分集合底層是陣列實現的

異:陣列一旦確定就不可以更改長度,且儲存資料型別必須一致;集合可以根據需求進行擴容,以及儲存不同型別的資料

集合分為collection和map兩大類

collection

collection集合內中的元素都是無序的,所以不能通過索引進行查詢

add(元素)	//新增元素

addall(集合) //將collection集合中的元素全部新增

clear() //移除所有元素

contains(元素) // 判斷是否含有這個元素

isempty() // 不含元素返回true

iterator() //返回此集合迭代器

remove(元素) //移除單個元素

size() //返回元素個數

toarray() //返回collection的object陣列

collection集合遍歷

1.for

2.foreach

3.使用迭代器 col.iterator

4.使用toarray,返回object陣列進行遍歷

collection-list

有序的collection(序列),此介面的使用者可以根據索引對每個元素的插入進行精確的控制,可以根據索引進行訪問

get(index)	//獲取該索引的值

indexof(元素) //獲取該元素的索引

sublist(開始,結束) //擷取,包括開始,不包括結尾

set(index,元素) //根據索引修改元素

listiterator() //返回list的迭代器

arraylist

list子介面,底層陣列實現,可以使用多型,使用父介面的方法

初始容量為10,自動擴容點為0.5

linkedlist

list子介面,底層雙向鍊錶實現,存在新增方法

addfirst(元素)	//在首部拆入元素

addlast(元素) //在尾部插入元素

getfirst() //獲取第乙個元素

getlast() //獲取最後乙個元素

indexof(元素) //返回第一次出現的索引

lastindexof(元素) //返回最後一次出現的索引

remove(index) //移除索引的元素

list集合遍歷

1.for

2.foreach

3.使用迭代器 s.iterator

4.使用toarray,返回object陣列進行遍歷

collection-set

乙個不包含重複元素的collection,集合中只能存在乙個null值

無新增方法,直接使用父類中的方法

set-hashset

初始容量為16,載入因子0.75

無新增方法,直接使用父類中的方法

他的底層是hashmap實現的,由陣列,鍊錶和紅黑樹構成

set-treeset

按照預設公升序排序,當你需要插入元素是,需要內部需要實現comparable介面,或者建立外部comparator排序

set set=new treeset(collection集合,外部比較器)
set遍歷

1.foreach

2.使用迭代器 s.iterator

map集合

繼承dictionary

以鍵值對的形式存在,鍵唯一不可重複,值可以重複,如果加入相同的鍵,值會覆蓋

map 介面提供三種collection 檢視,允許以鍵集、值集或鍵-值對映關係集的形式檢視某個對映的內容

put(key,value)	//插入資料

containskey(key) //判斷是否含有key值

containsvalue(value) //判斷是否含有value值

get(key),返回素對應的值,沒有則返回null

entryset() //返回set對映 key-value 檢視,常用來進行遍歷

values() //返回collection的對映中的 value 檢視 ,常用來進行遍歷

keyset() //返回此對映中包 key 檢視 ,常用來遍歷

hashmap

基於雜湊表實現。使用hashmap要求新增的鍵類明確定義了hashcode()和equals()[可以重寫hashcode()和equals()],為了優化hashmap空間的使用,您可以調優初始容量和負載因子,hashmap(): 構建乙個空的雜湊映像

適用於map中插入,刪除,定位元素

treemap

基於紅黑樹,該對映根據其鍵的自然順序進行排序,或者根據建立對映時提供的 comparator 進行排序,具體取決於使用的構造方法。

map集合遍歷

1.使用keyset進行遍歷(key遍歷)

setset=map.keyset();

iteratorit=set.iteratr();

while( it.hasnext())

2.使用values對映collection(value遍歷)

collection col =map.values;

iterator it = col.iterator();

while( it.hasnext())

3.使用entryset遍歷(key-value遍歷)

set> entrys=map.entryset();

iterator> it=entrys.iterator();

while( it.haonext())

字典 容器 集合

常用方法 nsmutablearray 陣列 addobject count removeobjectatindex nsmutabledictionary 字典 objectforkey setobject forkey removeobjectforkey 字典單詞 entry 實體 鍵值對 c...

集合容器對比

vector和list vector 在記憶體中是連續儲存的,對於隨機訪問的效率較高 對於插入和刪除,由於需要複製元素,開銷較大 list在記憶體中是離散儲存的,對於隨機訪問需要遍歷,效率較低而對於插入刪除效率較高 list執行緒不安全,vector是執行緒安全的 arraylist和linkedl...

set 集合容器

簡單學習一下set集合容器 標頭檔案 include using namespace std sets 必須是有定義 運算子的型別 int,string 向s中加資料 s.insert elem 插入elem之後元素預設按公升序排序,集合中是沒有重複元素的,每個不同的元素只存乙個 s.clear 清...