數組操作 oc





#import <Foundation/Foundation.h>


int main(int argc, const char * argv[])
{


    @autoreleasepool {
        //創建數組對象,NSArray不可變數組
        //c語言的數組可以存放任何類型的數據,同一個數組只能有同一種數據類型
        //oc語言的數組只能存放對象,可以存放任意對象
        // [NSNull null] == 空對象
        //NSArray *arr = [[NSArray alloc] initWithObjects:@"123",@"345",@"abc", nil];
        NSArray *arr1 = @[@"1 2 3", @"345", [NSNull null], @"789"];
        NSArray *arr3 = [[NSArray alloc] initWithArray:arr1];
        NSLog(@"arr = %@",arr3);
        
        //將c數組轉換爲oc數組對象
        //oc不允許將nil插入到數組中,因爲nil作用是數組的結束標記
        NSString *carr[10] = {@"123", @"456", @"789"};
        NSArray *arr4 = [[NSArray alloc] initWithObjects:carr count:2];
        NSLog(@"arr4 = %@",arr4);
        //獲取元素個數
        NSUInteger count = [arr4 count];
        NSLog(@"count = %ld",count);
        //獲取指定下標元素
        NSLog(@"%@",[arr3 objectAtIndex:1]);
        //獲取第一個元素或者最後一個元素
        id arrf = [arr3 firstObject];
        id arrl = [arr3 lastObject];
        NSLog(@"%@ %@",arrf,arrl);
        //獲取子集
        NSArray *arr2 = @[@"111", @"222", @"333", @"444", @"555", @"666"];
        
        //取出連續範圍的元素作爲子集內容
        NSArray *sub1 = [arr2 subarrayWithRange:NSMakeRange(1, 3)];
        
        NSLog(@"sub1 = %@", sub1);
        //獲取任意元素作爲子集
        //1.列出所需要元素的下標清單
        NSMutableIndexSet *indexs = [NSMutableIndexSet indexSet];
        //1-1.將要獲取元素的下標寫入清單
        for (NSInteger i = 0; i < [arr2 count]; i++)
        {
            if (i % 2 != 0)
            {
                [indexs addIndex:i];
            }
        }
        
        //2.將清單交給數組
        //id obj =[arr2 objectAtIndex:0]; //獲取單個元素,返回單個元素
        NSArray *sub2 = [arr2 objectsAtIndexes:indexs];//獲取下標清單裏的所有元素,返回一個元素集合(數組)
        
        NSLog(@"sub2 = %@", sub2);
        
        //獲取最長字符串和最小字符串
        //快速枚舉
        NSArray *arr5 = @[@"123456789", @"222", @"333", @"errr", @"444", @"5", @"666"];
        NSInteger maxLength = [arr5[0] length];
        NSInteger minLength = [arr5[0] length];
        NSString *maxString = nil;
        NSString *minString = nil;
        
        for (id obj in arr5) {
            
            if (maxLength <= [obj length]) {
                
                maxLength = [obj length];
                maxString = obj;
            }
            
            if (minLength >= [obj length]) {
                
                minLength = [obj length];
                minString = obj;
            }
        }
        NSLog(@"maxString = %@, minString = %@",maxString,minString);
#if 0
        //創建可變數組對象
        NSMutableArray *arr1 = [[NSMutableArray alloc] initWithCapacity:30];
        NSMutableArray *arr2 = [NSMutableArray arrayWithCapacity:30];
        
        //添加元素
        [arr1 addObject:@"123"];
        [arr1 addObject:@"456"];
        
        [arr2 addObjectsFromArray:arr1];
        [arr2 addObject:@"789"];
        [arr2 addObject:@"789"];
        [arr2 addObject:@"789"];
        
        NSLog(@"arr1 = %@",arr1);
        NSLog(@"arr2 = %@",arr2);
        
        //插入元素
        //插入下標的範圍: 0<=index<=count
        [arr1 insertObject:@"aaa" atIndex:1];
        [arr1 insertObject:@"bbb" atIndex:[arr1 count]];
        NSLog(@"arr1 = %@",arr1);
        
        //刪除
        [arr2 removeAllObjects];//刪除所有元素
        [arr2 removeLastObject];//刪除最後一個元素
        [arr2 removeObject:@"789"];//刪除指定對象,會將所有對象刪除
        [arr2 removeObject:@"789" inRange:NSMakeRange(1, 2)];//刪除指定範圍中的指定對象
        [arr2 removeObjectAtIndex:0];//刪除指定下標的元素
        [arr2 removeObjectsInRange:NSMakeRange(2, 2)];//刪除指定範圍中得元素
        [arr2 removeObjectIdenticalTo:@"789"];
        [arr2 removeObjectIdenticalTo:@"789" inRange:NSMakeRange(2, 1)];
        //如果要刪除不連續的元素,則先把要刪除的元素放在一個清單中,然後再刪除該清單
        //比如要刪下標爲偶數的
        
        NSMutableIndexSet *indexs = [NSMutableIndexSet indexSet];
        
        for (int i = 0; i < [arr2 count]; i++) {
            
            if (i % 2 == 0) {
                
                [indexs addIndex:i];
            }
            
        }
        //刪除清單中得元素
        [arr2 removeObjectsAtIndexes:indexs];
        
        
        //修改數組中得內容
        [arr2 replaceObjectAtIndex:2 withObject:@"aaa"];
        NSArray *arr = @[@"qqqq",@"www",@"ee"];
        [arr2 replaceObjectsAtIndexes:indexs withObjects:arr];
        // qq, 789, ww, 456, ee
         [arr2 replaceObjectsInRange:NSMakeRange(1, 3) withObjectsFromArray:arr];// qq, qq, ww, ee, ee,在指定範圍內,修改數組中得內容。
        
        //交換數組中得內容
        [arr2 exchangeObjectAtIndex:1 withObjectAtIndex:3];
        //用oc對c語言中得數組進行排序
        for (int i = 0; i < [arr2 count]; ++i) {
            
            for (int j = i + 1; j < [arr2 count]; ++j) {
                
                if ([arr2[i] length] > [arr2[j] length]) {
                    
                    [arr2 exchangeObjectAtIndex:i withObjectAtIndex:j];
                }
            }
        }
        NSLog(@"arr2 = %@",arr2);
#endif
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章