【Foundation-37-1】#import Foundation/NSIndexSet.h不可索引集合

2024-08-27 07:48

本文主要是介绍【Foundation-37-1】#import Foundation/NSIndexSet.h不可索引集合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NSIndexSet 用来让你从某个 data structure 里面提取一部分东西出来成为一个新的东西。
比如你有一个 NSArray, 里面是
(one, two, three, four, five)
然后你造了个 indexSet 的内容是 0,1,2,4

然后你把它套到那个 array 上,就是 (one, two,three,five)


@interface NSIndexSet :NSObject <NSCopying,NSMutableCopying, NSSecureCoding> {

    @protected   


【初始化】

+ (instancetype)indexSet;

+ (instancetype)indexSetWithIndex:(NSUInteger)value;

+ (instancetype)indexSetWithIndexesInRange:(NSRange)range;


- (instancetype)initWithIndexSet:(NSIndexSet *)indexSet NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithIndex:(NSUInteger)value;

- (instancetype)initWithIndexesInRange:(NSRange)range NS_DESIGNATED_INITIALIZER;




- (BOOL)isEqualToIndexSet:(NSIndexSet *)indexSet;// 比较

@property (readonly)NSUInteger count;// 数量

@property (readonly)NSUInteger firstIndex;// 第一个

@property (readonly)NSUInteger lastIndex;// 最后一个



- (NSUInteger)getIndexes:(NSUInteger *)indexBuffer maxCount:(NSUInteger)bufferSize inIndexRange:(NSRangePointer)range;// 阿西吧,待研究


- (NSUInteger)countOfIndexesInRange:(NSRange)range NS_AVAILABLE(10_5, 2_0);// 在(x,y)范围内的个数




【大于小于】

- (NSUInteger)indexGreaterThanIndex:(NSUInteger)value;// 大于value 的第一个位置

- (NSUInteger)indexLessThanIndex:(NSUInteger)value;// 小雨value 的第一个位置

- (NSUInteger)indexGreaterThanOrEqualToIndex:(NSUInteger)value;// 大于等于 value 的第一个位置

- (NSUInteger)indexLessThanOrEqualToIndex:(NSUInteger)value;// 小于等于 value 的第一个位置



【判断】

- (BOOL)containsIndex:(NSUInteger)value;// 是否包含 value

- (BOOL)containsIndexesInRange:(NSRange)range;// 是否包含 range

- (BOOL)containsIndexes:(NSIndexSet *)indexSet;// 是否包含 indexSet

- (BOOL)intersectsIndexesInRange:(NSRange)range;// 是否与 range 有交集



【遍历】

- (void)enumerateIndexesUsingBlock:(void (^)(NSUInteger idx,BOOL *stop))block NS_AVAILABLE(10_6, 4_0);

- (void)enumerateIndexesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(NSUInteger idx,BOOL *stop))block NS_AVAILABLE(10_6, 4_0);

- (void)enumerateIndexesInRange:(NSRange)range options:(NSEnumerationOptions)opts usingBlock:(void (^)(NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);

    NSRange myRange = NSMakeRange(1, 4);NSIndexSet *indexset = [[NSIndexSet alloc]initWithIndexesInRange:myRange];[indexset enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {NSLog(@"%ld",idx);}];



【遍历符合条件的个数】

- (NSUInteger)indexPassingTest:(BOOL (^)(NSUInteger idx,BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

- (NSUInteger)indexWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(NSUInteger idx,BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

- (NSUInteger)indexInRange:(NSRange)range options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

    NSArray *arr = @[@"0",@"1",@"2",@"3",@"4"];NSRange myRange = NSMakeRange(1, 4);NSIndexSet *indexset = [[NSIndexSet alloc]initWithIndexesInRange:myRange];NSUInteger test = [indexset indexPassingTest:^BOOL(NSUInteger idx, BOOL *stop) {if ([[arr objectAtIndex:idx]isEqualToString:@"3"]) {NSLog(@"ok");//test +1;return YES;}else{NSLog(@"no");return NO;//结束}}];


【遍历符合条件的索引集合】

- (NSIndexSet *)indexesPassingTest:(BOOL (^)(NSUInteger idx,BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

- (NSIndexSet *)indexesWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(NSUInteger idx,BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

- (NSIndexSet *)indexesInRange:(NSRange)range options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

    NSArray *arr = @[@"0",@"2",@"2",@"3",@"4"];NSRange myRange = NSMakeRange(1, 4);NSIndexSet *indexset = [[NSIndexSet alloc]initWithIndexesInRange:myRange];NSIndexSet *test1 = [indexset indexesPassingTest:^BOOL(NSUInteger idx, BOOL *stop) {if ([[arr objectAtIndex:idx]isEqualToString:@"2"]) {NSLog(@"ok");//test +1;return YES;}else{NSLog(@"no");return NO;//结束}}];




【遍历其中的所有范围】

- (void)enumerateRangesUsingBlock:(void (^)(NSRange range,BOOL *stop))block NS_AVAILABLE(10_7, 5_0);

- (void)enumerateRangesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(NSRange range,BOOL *stop))block NS_AVAILABLE(10_7, 5_0);

- (void)enumerateRangesInRange:(NSRange)range options:(NSEnumerationOptions)opts usingBlock:(void (^)(NSRange range, BOOL *stop))block NS_AVAILABLE(10_7, 5_0);

    NSMutableIndexSet *muindex = [NSMutableIndexSet indexSet];[muindex addIndex:1];[muindex addIndex:3];[muindex addIndex:4];[muindex addIndex:5];[muindex addIndex:5];[muindex addIndex:7];[muindex enumerateRangesUsingBlock:^(NSRange range, BOOL *stop) {NSLog(@"%lu",(unsigned long)range.location);NSLog(@"%lu",range.length);}];


@end



这篇关于【Foundation-37-1】#import Foundation/NSIndexSet.h不可索引集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111065

相关文章

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Pandas中多重索引技巧的实现

《Pandas中多重索引技巧的实现》Pandas中的多重索引功能强大,适用于处理多维数据,本文就来介绍一下多重索引技巧,具有一定的参考价值,感兴趣的可以了解一下... 目录1.多重索引概述2.多重索引的基本操作2.1 选择和切片多重索引2.2 交换层级与重设索引3.多重索引的高级操作3.1 多重索引的分组聚

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora