iOS基礎之容器

2021-06-26 13:09:02 字數 2798 閱讀 8146

cocoa touch基礎框架提供比較常用的容器類物件:nsarray 、nsdicitonary、nsset、nsindex

1.nsarray和它的子類nsmutablearray

它們相當於陣列,可以持有不同型別的objective-c物件,其他型別。比如說c型別的整型、浮點型、列舉型和結構體指標等,都不會被它們支援。同時nil也不能用作儲存物件,應為它被看作是整個陣列的結束符。

nsarray一旦被建立,就不能被修改,不能再進行新增、刪除、插入和替換操作。

nsmutablearray是動態的可以隨意修改裡面的物件。

如果要複製陣列的話:

nsarray *array=[nsarray arraywitharray:array1];

如果要獲取陣列的長度:

int length=[array count];

如果訪問陣列中的特定位置的乙個物件:

nsstring *mystring=[array objectatindex:index];

如果要檢視是否包含乙個指定的物件:

bool isfound=[array containsobject:物件];

如果要得到乙個物件在陣列中的位置:

int index=[array indexofobject:物件];

下面是書上的例子:

nsarray *array=[nsarray arraywithobjects:@"one",@"two",@"three", nil];

nsenumerator *enumerator=[array objectenumerator];//生成列舉物件

id obj;

while (obj=[enumerator nextobject])

nsmutablearray可以對裡面的物件進行修改。

nsstring *str1=@"one";

nsstring *str2=@"two";

nsstring *str3=@"three";

nsstring *str4=@"four";

nsmutablearray *myarray=[[nsmutablearray alloc]initwithobjects:str1,str2,str3, nil];

//使用**在可變陣列增加物件

[myarray addobject:str4];

//可以在開始處增加物件
[myarray insertobject:str4 atindex:0];
//可以替換陣列中乙個特定的物件

[myarray replaceobjectsatindexes:0 withobjects:str4];

//刪除乙個物件

[myarray removeobjectatindex:0];

//刪除多個物件

nsrange range=nsmakerange(0, 2);

[myarray removeobjectsinrange:range];

//刪除所有物件

[myarray removeallobjects];

2.nsdictinonary

按照關鍵值無序集合的方式來儲存物件,每乙個物件都有乙個關鍵值,使用者可以用它來訪問相應的物件。

nsdictionary的每個鍵-值對包含了用於鍵的乙個nsstring和用於值的乙個objective-c物件,字典中的鍵必須是唯一的,值不需要唯一的。

nsdictionary一旦被建立就不能被修改,不能再進行新增,修改和刪除插入操作。nsmutabledictionary則是動態的。在建立字典的時候要用nil來結束。

檢視字典中有多少元素:

int dictionary=[mydictionary count];

訪問字典中的乙個值:

nsarray *array1=[mydictionary objectforkey:@"值"];

從乙個字典獲取鍵

nsarray *key=[mydictionary allkeysforobject:array1];

獲取字典中的所有值的乙個陣列:

nsarray *values=[mydictionary allvalues];

也可以向nsarray列舉出所有的內容

for(id key in mydicitionary){

nslog(@「key:%@,value:%@」,key,[mydicitonary objectforkey:key]);

如果字典只包含屬性列表物件(nsdata,nsdate,nsnumber,nsstring,nsarray或nsdictionary),可以將其儲存到乙個檔案中:

bool sunccess=[mydictionary writetofile:filepath atomically:yes];//將字典內容寫到檔案中

相反的話,可以使用以下**用乙個檔案內容來填充乙個字典:

nsdictonary *myddict2=[nsdictonary dictionarywithcontensoffile:filepath];

3.nsset

它是乙個無序的物件集合,nsset物件裡的值都是唯一的。nsset一旦建立就不能被更改,如果要改變的話,可以使用nsmutableset;

4.nsindexset和nsmutableset

使用者可以建立索引集合,進行批處理。

java基礎之容器

專門用來存放其它類的物件,這個類就叫做容器,或者就叫做集合,集合就是將若干性質相同或相近的類物件組合在一起而形成的乙個整體 陣列也可以用於儲存多個物件,那麼為什麼要引入容器呢?引入容器的原因 1 陣列的長度難以擴充 2 陣列中資料的型別必須相同 容器與陣列的區別與聯絡 1 容器不是陣列,不能通過下標...

iOS基礎 可變和不可變容器

一般後台給介面,用的是陣列和字典,正常來說都不是可變的,當你在接受資料的時候 很多人會想著強制轉換 比如 nsmutabledictionary data nsmutabledictionary self model item objectforkey data 這不能從根本源頭上解決你的崩潰問題,...

C 容器基礎之vector

vector是線性容器,元素按照線性順序排序,容器中元素儲存在一塊連續的記憶體中,類似與陣列,不過vector可以自動增長或縮小儲存空間。和其他標準的順序容器相比 vector可以更有效的訪問容器內元素,和在末尾新增 刪除元素 而在其他位置的新增刪除元素,vector不如其他順序容器。注意 size...