1. 程式人生 > >基礎語法(二)集合

基礎語法(二)集合

1。NSArray / NSMutableArray:

NSArray *myArray = @[object1, object2, object3, 。。。];

__unused NSString *firstString = myArray[0];

p.s. __unused:巨集(macro),宣告一個物件但未使用時,compiler 不會報錯

NSArray *immutableArray = @[object1, object2, object3, 。。。];

NSMutableArray *mutableArray = [ [ NSMutableArray alloc ]  initWithArray :  immutableArray ];  // 從不可變數組裡初始化

[mutableArray  exchangeObjectAtIndex : 0  withObjectAtIndex:1 ] ;  //互換

[mutableArray  removeObjectAtIndex : 1 ] ;  //刪除

[mutableArray  setObject : object1  atIndexedSubscript:0 ] ;  //設定

2。NSDictionary / NSMutableDictionary:

NSDictionary *immutableDic = @{ @"first":object1, @"second":object2, @"third":object3, 。。。};

NSString *first = immutableDic[ @"first"];

NSMutableDictionary *mutableDic = [ [ NSMutableDictionary alloc ]  initWithDictionary : immutableDic ] ;

mutableDic[@"first"] = objectN ;  //可變字典,在初始化後可以更改

3。NSSet / NSMutableSet  -無序集合,NSOrderedSet / NSMutableOrderedSet  -有序集合

NSSet *immutableSet = [ [ NSSet alloc ]  initWithObjects : object1, object2, object3, nil ] ;

NSMutableSet *mutableSet = [ NSMutableSet  setWithSet : immutableSet ] ;

[ mutableSet  addObject : object4 ] ;

[ mutableSet  removeObject : object3 ] ;

p.s.  當 物件被重複加入set時,set只會取一次

NSSet *setOfNumbers = [ NSSet setWithArray : @[ @3, @4, @1, @10, @9] ] ;  //無序列印,隨機顯示集合內的元素,即第0位不一定是3

NSOrderedSet *orderedSetOfNumbers = [ NSOrderedSet  orderedSetWithArray :  @[ @3, @4, @1, @10, @9] ] ;  //有序列印,按集合內的元素順序顯示

NSMutableOrderedSet  *mutableOrderedSet = [ NSMutableOrderedSet  orderedSetWithArray :  @[ @3, @4, @1, @10, @9] ] ;

[ mutableOrderedSet  removeObject : @3 ] ;

[ mutableOrderedSet  addObject : @0 ] ;  // 在末尾加 

[mutableOrderedSet  exchangeObjectAtIndex : 1  withObjectAtIndex : 2 ] ;

4。NSCountedSet  -可變,無序,集合內可以有重複物件,並可計算重複次數

NSCountedSet  *setOfNumbers =  [ NSCountedSet  setWithObjects : @10, @20, @10, @10, @30, nil ] ;

[ setOfNumbers  addObject :  @20 ] ;

[ setOfNumbers  removeObject: @10 ] ;

unsigned  long = [ setOfNumbers  countForObject : @10 ] ;   // %lu : 2