美文网首页
iOS数组、集合、字典

iOS数组、集合、字典

作者: DDY | 来源:发表于2017-02-14 14:28 被阅读101次

    数组

    • 可变数组

    • 不可变数组

    集合

    集合中不能存在重复的对象,利用此特性可以过滤重复对象
    集合和数组有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
    集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序

    *可变集合

    • 不可变集合

    NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three", nil];
    NSMutableSet *set1 = [[NSMutableSet alloc] initWithObjects:@"1",@"2",@"3", nil nil];
    NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"1",@"5",@"6", nil nil];
    // 对象个数
    [set count];
    // 判断是否拥有某对象
    BOOL ret0 = [set containsObject:@"two"];
    // 取并集1,2,3,5,6
    [set1 unionSet:set2];
    // 取交集1
    [set1 intersectSet:set2];
    // 删除set1中与set2相同的元素 结果:2, 3
    [set1 minusSet:set2];
    // 判断两个集合是否相等
    BOOL ret1 = [set1 isEqualToSet:set2];
    BOOL ret2 = [set isSubsetOfSet:set2];
    // 通过数组初始化集合
    NSSet *set3 = [[NSSet alloc] initWithArray:array];
    // 集合转变为数组
    NSArray *array2 = [set allObjects];

    // 可变集合NSMutableSet
    NSMutableSet * set4 = [[NSMutableSet alloc] init];
    [set4 addObject:@"one"];
    [set4 addObject:@"two"];
    //如果添加的元素有重复,实际只保留一个
    [set4 addObject:@"two"];
    //删除元素
    [set4 removeObject:@"two"];
    [set4 removeAllObjects];
    // 将set2中的元素添加到set中来,如果有重复,只保留一个
    [set unionSet:set2];

    // 指数集合(索引集合)NSIndexSet
    // 集合中的数字是123
    NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 3)];

    // 根据集合提取数组中指定位置的元素
    NSArray * array2 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
    NSArray * newArray = [array2 objectsAtIndexes:indexSet];

    • 可变字典

    • 不可变字典

    相关文章

      网友评论

          本文标题:iOS数组、集合、字典

          本文链接:https://www.haomeiwen.com/subject/jrbxwttx.html