美文网首页
iOS官方文档 Foundation篇---NSOrderedS

iOS官方文档 Foundation篇---NSOrderedS

作者: qianfei | 来源:发表于2019-05-21 17:08 被阅读0次

    NSOrderedSet

    静态的,有序的唯一对象集合,继承自NSObject。(创建后无法修改集合内容);

    创建有序集合
    // 创建空集合
    NSOrderedSet *orderSet = [NSOrderedSet orderedSet];//{()}
        
    // 创建包含一个给定元素的集合
    NSOrderedSet *orderSet1 = [NSOrderedSet orderedSetWithObject:@"1"];//{(1)}
    
    // 创建包含多个给定元素的集合
    NSOrderedSet *orderSet2 = [NSOrderedSet orderedSetWithObjects:@"1",@"2",@"3", nil];//{(1,2,3)}
    
    NSString *values[4];
    values[0] = @"1";
    values[1] = @"2";
    values[2] = @"3";
    values[3] = @"4";
    // 创建包含C数组内容的集合
    NSOrderedSet *orderSet3 = [NSOrderedSet orderedSetWithObjects:values count:3];//{(1,2,3)}
    
    NSSet *set = [NSSet setWithObjects:@"1",@"2",@"1",@"3",@"2", nil];
    // 创建包含set内容的集合
    NSOrderedSet *orderSet4 = [NSOrderedSet orderedSetWithSet:set];//{(3,1,2)}
    // 创建包含set内容的集合,并复制内容
    NSOrderedSet *orderSet5 = [NSOrderedSet orderedSetWithSet:set copyItems:YES];//{(3,1,2)}
    
    NSArray *array = @[@"1",@"2",@"3"];
    // 创建包含数组内容的集合
    NSOrderedSet *orderSet6 = [NSOrderedSet orderedSetWithArray:array];//{(1,2,3)}
    // 创建包含数组指定范围内容的集合
    NSOrderedSet *orderSet7 = [NSOrderedSet orderedSetWithArray:array range:NSMakeRange(0, 1) copyItems:YES];//{(1)}
    
    // 创建包含指定集合内容的集合
    NSOrderedSet *orderSet8 = [NSOrderedSet orderedSetWithOrderedSet:orderSet4];//{(3,1,2)}
    // 创建包含集合指定范围内容的集合
    NSOrderedSet *orderSet9 = [NSOrderedSet orderedSetWithOrderedSet:orderSet4 range:NSMakeRange(0, 3) copyItems:YES];//{(3,1,2)}
    
    取值
    // 创建包含多个给定元素的集合
    NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithObjects:@"1",@"2",@"3",@"4",@"5", nil];////{(1,2,3,4,5)}
        
    // 集合中的成员数量
    NSUInteger count = [orderSet count];//5
        
    // 集合是否包含指定对象
    BOOL isCountain = [orderSet containsObject:@"1"];// yes
        
    // 集合中的第一个对象
    NSString *firstObject = [orderSet firstObject];1
        
    // 集合中的最后一个对象
    NSString *lastObject = [orderSet lastObject];//5
        
    // 集合中指定索引位置的对象
    NSString *objcet = [orderSet objectAtIndex:1];//2
        
    // 集合中指定索引集的对象集合
    NSArray *arr = [orderSet objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)]];//(1,2)
        
    // 集合中指定对象的索引
    NSUInteger index = [orderSet indexOfObject:@"1"];//0
        
    // 集合中给定NSComparator块与集合中的元素进行比较的对象在指定范围内的索引
    NSInteger index1 = [orderSet indexOfObject:@"1" inSortedRange:NSMakeRange(0, 3) options:NSBinarySearchingFirstEqual usingComparator:^NSComparisonResult(id  _Nonnull obj1, id _Nonnull obj2) {
      return obj1 < obj2;
    }];//0
    
    // 集合中满足给定条件的索引
    NSUInteger index2 = [orderSet indexOfObjectPassingTest:^BOOL(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      if (idx == 2) {
        return YES;
      }
      return NO;
    }];//2
    
    // 按顺序排列的有序集
    [orderSet reversedOrderedSet];//{(1,2,3,4,5)}
    
    // 正序遍历
    NSEnumerator *enumerator = [orderSet objectEnumerator];
    id obj;
    while (obj = [enumerator nextObject]) {
      NSLog(@"开始打印:%@\n",obj);
    }
    
    // 倒序遍历
    NSEnumerator *enumerator1 = [orderSet reverseObjectEnumerator];
    id obj1;
    while (obj1 = [enumerator1 nextObject]) {
      NSLog(@"开始打印:%@\n",obj1);
    }
    
    集合比较
    NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithObjects:@"1",@"2",@"3",@"4",@"5", nil];////{(1,2,3,4,5)}
    NSOrderedSet *orderSet1 = [NSOrderedSet orderedSetWithObjects:@"1",@"2",@"3", nil];////{(1,2,3)}
    
    // 两个集合是否相同
    BOOL isEqual = [orderSet isEqualToOrderedSet:orderSet1];//NO
    
    // 两个集合至少有一个相同的对象
    BOOL isIntersects = [orderSet intersectsOrderedSet:orderSet1];// YES
        
    NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil];
    // 两个集合至少有一个相同的对象
    BOOL isIntersects1 = [orderSet intersectsSet:set];//YES
        
    // 接收集合的每一个对象也存在于给定集合中
    BOOL isSub = [orderSet1 isSubsetOfOrderedSet:orderSet1];//NO
    
    // 接收集合的每一个对象也存在于给定集合中
    BOOL isSub1 = [orderSet isSubsetOfSet:set];//NO
    
    集合转数组,集合转Set
    NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithObjects:@"3",@"1",@"4",@"2",@"5", nil];//{(1,2,3,4,5)}
    
    // 集合转数组
    NSArray *array = [orderSet array];//(3,1,4,2,5)
    
    // 集合转Set
    NSSet *set1 = [orderSet set];//{(3,1,4,2,5)}
    
    集合排序
    NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithObjects:@"3",@"1",@"4",@"2",@"5", nil];//{(1,2,3,4,5)}
    
    // 按升序列出接收有序集的元素,由给定NSComparator块指定的比较方法确定
    NSArray *sortArr = [orderSet sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
      return obj1 < obj2;
    }];//(5,4,3,2,1)
    
    // 按升序列出接收有序集的元素,由给定NSComparator块指定的比较方法确定
    NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES];
    NSArray *arr = [NSArray arrayWithObject:descriptor];
    NSArray *sortArr1 = [orderSet sortedArrayUsingDescriptors:arr];//(1,2,3,4,5)
    
    // 按升序列出接收有序集的元素,由给定NSComparator块指定的比较方法确定。
    NSArray *sortArr2 = [orderSet sortedArrayWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
      return obj1 > obj2;
    }];//(1,2,3,4,5)
    

    NSMutableOrderedSet

    动态的,有序的独特对象集合,继承自NSOrderedSet。(创建后可修改集合内容);

    创建动态有序集合
    // 创建给定初始容量的可变有序集合。
    NSMutableOrderedSet *mulOrderSet = [NSMutableOrderedSet orderedSetWithCapacity:5];
    NSMutableOrderedSet *mulOrderSet1 = [[NSMutableOrderedSet alloc]initWithCapacity:5];
    
    增加数据
    NSMutableOrderedSet *mulOrderSet = [NSMutableOrderedSet orderedSetWithCapacity:5];
    // 添加指定对象到集合尾部
    [mulOrderSet addObject:@"1"];// {(1)}
        
    NSString *values[2];
    values[0] = @"2";
    values[1] = @"3";
    // 添加指定C数组的对象到集合尾部
    [mulOrderSet addObjects:values count:2];//{(1,2,3)}
    
    // 添加指定数组的对象到集合尾部
    NSArray *array = [NSArray arrayWithObject:@"4"];
    [mulOrderSet addObjectsFromArray:array];//{(1,2,3,4)}
    
    // 插入对象到集合指定索引位置
    [mulOrderSet insertObject:@"6" atIndex:4];//{(1,2,3,4,6)}
    
    // 替换集合中指定索引处的对象
    [mulOrderSet setObject:@"5" atIndexedSubscript:4];//{(1,2,3,4,5)}
    
    // 在指定索引出插入数组的对象
    [mulOrderSet insertObjects:[NSArray arrayWithObject:@"6"] atIndexes:[NSIndexSet indexSetWithIndex:5]];//{(1,2,3,4,5,6)}
    
    删除数据
    // 创建动态有序集合
    NSMutableOrderedSet *mulOrderSet = [NSMutableOrderedSet orderedSetWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
    
    // 删除集合中的指定对象
    [mulOrderSet removeObject:@"1"];//{(2,3,4,5,6)}
    
    // 删除集合中指定索引位置的对象
    [mulOrderSet removeObjectAtIndex:1];//{(2,4,5,6)}
    
    // 删除指定索引集位置的对象
    [mulOrderSet removeObjectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)]];//{(4,5,6)}
    
    // 删除集合中指定数组内容的对象
    [mulOrderSet removeObjectsInArray:[NSArray arrayWithObject:@"4"]];//{(5,6)}
    
    // 删除集合中指定范围的对象
    [mulOrderSet removeObjectsInRange:NSMakeRange(0,  1)];//{(6)}
    
    // 删除集合中的所有对象
    [mulOrderSet removeAllObjects];//{()}
    
    更改数据
    NSMutableOrderedSet *mulOrderSet = [NSMutableOrderedSet orderedSetWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];//{(1,2,3,4,5,6)}
    // 用指定对象替换指定索引位置的对象
    [mulOrderSet replaceObjectAtIndex:0 withObject:@"0"];//{(0,2,3,4,5,6)}
    
    // 用指定集合的内容替换指定索引集位置的对象
    [mulOrderSet replaceObjectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)] withObjects:[NSArray arrayWithObjects:@"1",@"2", nil]];//{(1,2,3,4,5,6)}
    
    NSString *values[2];
    values[0] = @"2";
    values[1] = @"3";
    // 用指定C数组中指定数量的对象替换集合中的对象
    [mulOrderSet replaceObjectsInRange:NSMakeRange(0, 2) withObjects:values count:2];//{2,3,4,5,6}
    
    // 在指定的索引处追加或替换对象
    [mulOrderSet setObject:@"1" atIndex:0];//{(1,3,4,5,6)}
    
    // 将指定索引处的对象移动到新位置
    [mulOrderSet moveObjectsAtIndexes:[NSIndexSet indexSetWithIndex:0] toIndex:1];//{(3,1,4,5,6)}
    
    // 将指定索引处的对象与另一个索引处的对象进行交换
    [mulOrderSet exchangeObjectAtIndex:0 withObjectAtIndex:1];//{(1,3,4,5,6)}
    
    集合重组
    NSMutableOrderedSet *mulOrderSet = [NSMutableOrderedSet orderedSetWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];//{(1,2,3,4,5,6)}
    NSMutableOrderedSet *mulOrderSet1 = [NSMutableOrderedSet orderedSetWithObjects:@"1",@"2",@"3", nil];//{(1,2,3)}
    
    // 从接收有序集中删除不是另一个有序集的成员的对象(取交集)
    [mulOrderSet intersectOrderedSet:mulOrderSet1];
    
    // 从接收的可变有序集中移除另一个给定有序集中的每个对象(取差集)
    [mulOrderSet minusOrderedSet:mulOrderSet1];
    
    // 将另一个给定有序集中的每个对象添加到接收可变有序集(取并集)
    [mulOrderSet unionOrderedSet:mulOrderSet1];
    
    欢迎留言指正,会持续更新。。。

    相关文章

      网友评论

          本文标题:iOS官方文档 Foundation篇---NSOrderedS

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