iOS开发学习专题-基础知识(二)NSArray数组NSMutableArray可变数组NSSet集合NSMutableSet可变集合详细使用方式

来源:互联网 发布:淘宝代充话费怎么弄 编辑:程序博客网 时间:2024/05/17 13:46

本文主要讲解的是不可变数组NSArray可变数组NSMutableArray集合NSSet可变集合NSMutableSet详细使用方式包括类型和值之间的转换

文章是博主原创,转载请标明出处http://blog.csdn.net/werctzzz/article/details/70928738

首先来一个集合的详细方法~

#pragma mark NSSet 不可变集合    // NSSet和NSArray有相似之处,都是存储不同的对象的地址    // 但是NSArray是有序的集合,NSSet是无序的集合。    // 在介绍完了NSSet就讲讲数组~    // 基本知识:集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。        // 1.集合的初始化    NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];    NSLog(@"%ld",[set count]); //集合中对象的个数    // 2.集合的判断        // 2.1判断集合中是否拥有@“two”        BOOL boolset1 = [set containsObject:@"two"];        // 2.2判断两个集合是否相等        NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];        BOOL boolset2 = [set isEqualToSet:set2];        //判断set是否是set3的子集合        NSSet * set3 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];        BOOL boolset3 = [set isSubsetOfSet:set3];        // 3.通过数组来初始化集合        // 3.1数组转换为集合        NSArray * changeArray1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];        NSSet * changeSet = [[NSSet alloc] initWithArray:changeArray1];        // 3.2集合转换为数组        NSArray * changeArray2 = [changeSet allObjects];#pragma mark NSMutableSet 可变集合        // 1.可变集合初始化    NSMutableSet * MutableSet = [[NSMutableSet alloc] init];        // 2.内部元素的操作        // 2.1增加元素        [MutableSet addObject:@"one"];        [MutableSet addObject:@"two"];        [MutableSet addObject:@"two"];        // 2.2删除元素        [MutableSet removeObject:@"two"];        [MutableSet removeAllObjects];        // 3.集合的互相添加        // 3.1将一个不可变集合中的元素添加到可变集合中来,如果有重复,只保留一个        NSSet * addSet = [[NSSet alloc] initWithObjects:@"two",@"three",@"four", nil];        [MutableSet unionSet:addSet];        // 3.2删除set中与set2相同的元素        [MutableSet minusSet:addSet];        // 4.指数集合(索引集合)NSIndexSet    NSIndexSet * indexSet1 = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 3)]; //集合中的数字是123        // 5.根据集合提取数组中指定位置的元素    NSArray * arrayout1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];    NSArray * newArray1 = [arrayout1 objectsAtIndexes:indexSet1]; //返回@"two",@"three",@"four"        // 6.可变指数集合NSMutableIndexSet    NSMutableIndexSet * indexSet2 = [[NSMutableIndexSet alloc] init];    [indexSet2 addIndex:0];    [indexSet2 addIndex:3];    [indexSet2 addIndex:5];        // 7.通过集合获取数组中指定的元素    NSArray * arrayout2 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six", nil];    NSArray * newArray2 = [arrayout2 objectsAtIndexes:indexSet2]; //返回@"one",@"four",@"six"

接下来就是数组的详细使用方式~

#pragma mark NSArray 不可变数组    NSString *str1 = @"1";    NSString *str2 = @"2";    NSString *str3 = @"3";    //NSArray 常用方法    //  1. 创建对象,初始化    NSArray *arry1 = [[NSArray alloc]initWithObjects:str1,str2,str3, nil];    NSLog(@"%@", arry1);    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/        //  2. 获取数组中的对象 根据数据在数组的位置 index    NSString *obj = arry1[2]; // 注意类型要正确,不然会发生崩溃,如果类型不一致可以先转换    NSLog(@"%@", obj);//1    NSLog(@"%@", arry1[2]);//2    NSLog(@"%@", [arry1 objectAtIndex:1]);//3/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/        //  3. 获取数组长度(元素个数)    NSLog(@"%ld", [arry1 count]);    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/        //  4.查询某个对象的下标    NSArray *arry2 = [NSArray arrayWithObjects:@"赵",@"张",@"靳",@"张",@"宋",nil];    NSLog(@"%ld", [arry2 indexOfObject: @"靳"]);    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/#pragma mark NSMutableArray 可变数组    //  1.初始化创建    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"张三",@"李四",@"王五",@"孙二",@"赵六",@"周七", nil];    for (int i = 0; i < [array count]; i++){        NSLog(@"%d%@", i, [array objectAtIndex:i]);    }    // ⭐️初始化需要注意的地方    //    ①[NSMutableArray arrayWithCapacity:6]    //    初始化可变数组对象的长度,如果后面代码继续添加数组超过长度6以后NSMutableArray的长度会自动扩充,6是自己可以设置的颗粒度。    //    ②[array addObject:...]    //    向可变数组尾部添加数据对象。    //    ③[array addObjectsFromArray:..]    //    向可变数组尾部添加一个数组对象。/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/        //  2.对数组内容的操作        //  2.1添加元素        [array addObject:@"钱八"]; //添加一个 @"钱八"进去array里面        for (int i = 0; i < [array count]; i++){            NSLog(@"%d%@", i, [array objectAtIndex:i]);        }//钱八添加到array里面,在最后一个位置                //  2.2插入元素        [array insertObject:@"陈一" atIndex:2];        for (int i = 0; i < [array count]; i++){            NSLog(@"%d%@", i, [array objectAtIndex:i]);        }//把 陈一 插入到指定下标位置,下标为2                //  2.3删除元素        [array removeObject:@"孙二"];//把 孙二 从数组里删除        [array removeObjectAtIndex:5];//把下标为5的删除        // 重温一下上一篇博客学的 NSRange 设置一个范围为 0 到 3 之间。        NSRange range = NSMakeRange(0,3);        [array removeObject:@"李四" inRange:range];//按范围删除        // ⭐️删除操作时候要注意的地方    //    ①[array removeObject:(id)] 删除数组中指定元素,根据对象isEqual消息判断。    //    ②[array removeObjectAtIndex:(NSUInteger)] 删除数组中指定脚标索引的数据。    //    ③[array removeObjectsInArray:(NSArray *)] 删除一个数组的元素。    //    ④[array removeObjectIdenticalTo:(id)] 删除数组中指定元素,根据对象的地址判断    //    ⑤[array removeObjectIdenticalTo:(id) inRange:(NSRange)] 在指定范围内删除指定的元素。            // 遍历查看结果        for (int i = 0; i < [array count]; i++){            NSLog(@"%d%@", i, [array objectAtIndex:i]);        }            //  2.4替换元素        [array replaceObjectAtIndex:4 withObject:@"坑爹"];//给据下标把内容替换        for (int i = 0; i < [array count]; i++){            NSLog(@"%d%@", i, [array objectAtIndex:i]);        }        //  2.5交换指定位置元素        [array exchangeObjectAtIndex:2 withObjectAtIndex:4];//把二和四的下标元素替换        for (int i = 0; i < [array count]; i++){            NSLog(@"%d%@", i, [array objectAtIndex:i]);        }



0 0