oc中的集合類

首先來看看開發(fā)語言中集合的概念庆寺,把一些能夠確定的不同的對象看成一個整體器钟,那么就可以說這個整體是由這些對象全體構成的集合斑司。簡單的說,就是一個由多個對象組成的倉庫姻政。但是倉庫又分為很多種呆抑,一種是可以繼續(xù)填充的,一種是不能填充的汁展。下面我將介紹下oc中的集合鹊碍。

oc中集合分為分為三種:NSArray數(shù)組,NSDictionary字典,NSSet集合厌殉。

一、NSArray數(shù)組

1.1:不可變數(shù)組NSArray

NSArray是不可變數(shù)組侈咕,一旦創(chuàng)建就不能對其進行添加公罕,刪除等操作。

創(chuàng)建NSArray數(shù)組方法如下:

NSArray * array=[[NSArray alloc]init];//這是最簡單的創(chuàng)建方法

NSArray *array=[[NSArray arrayInitObjects:@"1",@"2","@3"],nil];

NSArray *array=[[NSArray alloc]initWithObject:@"1",@"2",@"3"],nil];

NSArray *array=@[@"1",@"2",@"3"]//這是最簡單的創(chuàng)建方式

NSString *str=array[0];//獲取指定位置的對象

NSString * str = [array objectAtIndex:0];//第二種方法獲取指定對象耀销。

//初始化一個數(shù)組時楼眷,經(jīng)常使用initWithObject和initWithObjects。沒有s的表示使用一個指針初始化NSArray熊尉,初始化后罐柳,這個NSArray的實例只有一個數(shù)據(jù),所以在調用沒有s的函數(shù)的時候是不能以nil結束的狰住;但是有s的就不一樣了张吉,哪怕只有一個數(shù)據(jù),或者沒有數(shù)據(jù)催植,必須使用一個nil結束肮蛹。

下面幾個重要的實用方法:

+ (id)arrayWithObjects:(id)firstObject, ...;? ? //nilterminated

- (int)count; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 得到array中的對象個數(shù)

- (id)objectAtIndex:(int)index; ? ? ? ? ? ? ? ? ? ? // ?得到索引為i的對象

- (BOOL)containsObject:(id)anObject; ? // 當anObject出現(xiàn)在array中,則返回yes(實際是通過isEqual:方法來判斷)

- (unsigned)indexOfObject:(id)anObject; // 查找array中的anObject,并返回其最小索引值创南。沒找到返回NSNotFound.

- (void)makeObjectsPerformSelector:(SEL)aSelector;

- (NSArray *)sortedArrayUsingSelector:(SEL)aSelector;

- (id)lastObject; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 得到array中最后一個對象伦忠。如果array中沒有任何對象存在,則返回nil

2.2 NSMutableArray

NSMutableArray為可變數(shù)組扰藕,初始化之后則可觸發(fā)增刪改查等燈操作缓苛。

//以下為創(chuàng)建NSMutableArray方式

NSMutableArray * array=[NSMutableArray array];

NSMutableArray *array=[NSMutableArray arrayWithCapacity:6]//后面數(shù)字邓深,則是初始化長度未桥,后面可以通過添加或者刪除更改其長度。

NSMutableArray *array=[[NSMutableArray alloc]init];

以下為NSMutableArray常用的方法:

[array removeObject:(id)] :刪除數(shù)組中指定元素芥备,根據(jù)對象isEqual消息判斷冬耿。

[array removeObjectIdenticalTo:(id)] : 刪除數(shù)組中指定元素,根據(jù)對象的地址判斷

[array removeObjectIdenticalTo:(id) inRange:(NSRange)] : 在指定范圍內(nèi)刪除指定的元素。

[array removeObjectAtIndex:(NSUInteger)]:刪除數(shù)組中指定腳標索引的數(shù)據(jù)萌壳。

[array removeObjectsInArray:(NSArray *)] :刪除一個數(shù)組的元素亦镶。

二、字典

2.1:NSDictionary

NSDictionary是以<key,value>形式存儲的一種集合袱瓮,類似于java中的map缤骨。NSDictionary是靜態(tài)的,當NSDictionary被創(chuàng)建時尺借,則key绊起,value就已經(jīng)存在了,并且不能被修改燎斩。在NSDictionary中key是唯一的虱歪,但是value可以相同蜂绎。這類似于map。

NSDictionary創(chuàng)建如下

//- (id) initWithObjectsAndKeys;

//NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil];

NSString *string = [dictionary objectForKey:@"One"];

NSLog(@"string:%@",string);

NSLog(@"dictionary:%@",dictionary);

[dictionary release];

NSDictionary常用方法如下:

+ dictionaryWithObjectsAndKeys: (id)firstObject, ...;

- (int)count; ? ? ? ? ? ? ? ? ? ? ? // 返回有多少對key-value

- (id)objectForKey:(id)key; ?//返回和key相關聯(lián)的value笋鄙。 如果沒有和key相關聯(lián)的value师枣,則返回nil。

- (NSArray *)allKeys; ? ? ? ?// 返回一個包含所有key的array

- (NSArray *)allValues;

- NSEnumerator *)keyEnumerator; ? //這個方法是從一個 dictionary 中得到一個 key 的迭代器.

Enumerators也就是 iterators 或 enumerations.我們可以使用它來一步一步迭代出集合中的所 有成員.

下面是我們可能使用它來列 舉所有的 key- ‐vaule 對

NSEnumerator ?*e ?= ?[myDict ?keyEnumerator];

for ?(NSString ?*s ?in ?e) ?{

NSLog(@"key ?is ?%@, ?value ?is ?%@", ?s, ?[myDict ?objectForKey:s]);

}

注:NSArray 也有一個類似的方法得到 array 的成員迭代 器 ? : ?objectEnumerator

2.2:NSMutableDictionary

NSMutableDictionary為NSDictionary的字類萧落,但是可以進行增刪改查等等操作践美。

字典的創(chuàng)建:

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

添加字典方法:

dictionary setObject:@"One" forKey:@"1"];

[dictionary setObject:@"Two" forKey:@"2"];

[dictionary setObject:@"Three" forKey:@"3"];

[dictionary setObject:@"Four" forKey:@"4"];、

刪除字典方法铐尚;

[dictionary removeObjectForKey:@"3"];

其他常用的字典方法:

+ (NSMutableDictionary *)dictionary;? ? ? ? ? ? ? // 創(chuàng)建一個空的dictionary

- (void)setObject:(id)anObjectforKey:(id)key; ?// 使用key和anObject組成一條記錄添加到dictionary中

// 如果key已存在拨脉,則會先移除舊的key-value,然后再添加新的key-value宣增。

- (void)removeObjectForKey:(id)key; ? ? ? ? ? ?// 從dictionary中刪除一條記錄玫膀,key以及和它對應的value

- (void)removeAllObjects;

- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;

三、Set集合

set集合其實和array集合很類似,只不過array集合時有序的,set集合是無序的不恭。這個方面是和android中的set是類似的。NSSet和我們常用NSArry區(qū)別是:在搜索一個一個元素時NSSet比NSArray效率高解阅,主要是它用到了一個算法hash(散列,也可直譯為哈希)泌霍。

3.1:NSSet

不可變的set货抄。

+(id)setWithObjects:obj1,obj2,...nil使用一組對象創(chuàng)建新的集合

-(id)initWithObjects:obj1,obj2,....nil使用一組對象初始化新分配的集合

-(NSUInteger)count返回集合成員個數(shù)

-(BOOL)containsObject:obj確定集合是否包含對象 obj

-(BOOL)member:obj確定集合是否包含對象 obj

-(NSEnumerator*)objectEnumerator返回集合中所有對象到一個 NSEnumerator 類型的對象

-(BOOL)isSubsetOfSet:nsset判斷集合是否是NSSet的子集

-(BOOL)intersectsSet:nsset判斷兩個集合的交集是否至少存在一個元素

-(BOOL)isEqualToSet:nsset判斷兩個集合是否相等

3.2:NSMutableSet

可變的set,可以操作增刪改查朱转。

+ (NSMutableSet *)set;

- (void)addObject:(id)anObject;

- (void)removeObject:(id)anObject;

- (void)removeAllObjects;

- (void)unionSet:(NSSet *)otherSet;? // 求并集

- (void)minusSet:(NSSet *)otherSet;? // 求差集

- (void)intersectSet:(NSSet *)otherSet;? // 求交集

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蟹地,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子藤为,更是在濱河造成了極大的恐慌怪与,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缅疟,死亡現(xiàn)場離奇詭異分别,居然都是意外死亡,警方通過查閱死者的電腦和手機存淫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門耘斩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桅咆,你說我怎么就攤上這事煌往。” “怎么了轧邪?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵刽脖,是天一觀的道長。 經(jīng)常有香客問我忌愚,道長曲管,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任硕糊,我火速辦了婚禮院水,結果婚禮上,老公的妹妹穿的比我還像新娘简十。我一直安慰自己檬某,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布螟蝙。 她就那樣靜靜地躺著恢恼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胰默。 梳的紋絲不亂的頭發(fā)上场斑,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音牵署,去河邊找鬼漏隐。 笑死,一個胖子當著我的面吹牛奴迅,可吹牛的內(nèi)容都是我干的青责。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼取具,長吁一口氣:“原來是場噩夢啊……” “哼脖隶!你這毒婦竟也來了?” 一聲冷哼從身側響起者填,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤浩村,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后占哟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體心墅,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年榨乎,在試婚紗的時候發(fā)現(xiàn)自己被綠了怎燥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜜暑,死狀恐怖铐姚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤隐绵,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布之众,位于F島的核電站,受9級特大地震影響依许,放射性物質發(fā)生泄漏棺禾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一峭跳、第九天 我趴在偏房一處隱蔽的房頂上張望膘婶。 院中可真熱鬧,春花似錦蛀醉、人聲如沸悬襟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脊岳。三九已至,卻和暖如春筛璧,著一層夾襖步出監(jiān)牢的瞬間逸绎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工夭谤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棺牧,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓朗儒,卻偏偏與公主長得像颊乘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子醉锄,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容