首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS·数据结构选型:某数据结构避免重复字符串元素(NSArray,NSSet,NSDictionary

场景需求: 解析某博客或者书籍网站数据时:已知它书籍首页URL地址,这个首页含有它书籍目录及其章节链接,APP想拉取它目录节点,然而,该目录页面里面的章节可能有重复内容,那么解析后,我们向内存中保存章节信息时候...数据结构选型: 数组:查询复杂度O(N) NSArray 哈希表:查询复杂度O(1) NSSet NSDictionary 1....而实际应用,查询效率比较高是哈希表,这种结构OC开发中有两种常见形式,一种是字典,一种是集合。集合每个元素只需要一样即可,而字典每个元素则需要存储两种数据,键和。 ?...哈希表 另外,哈希结构Android开发对应形式则类似下面的: private static HashSet sectionUrlSet = new HashSet(); 2.1...2.2 NSDictionary方案 实验代码 - (NSMutableSet *)sectionUrlDict { if(!

1.3K20

js如何判断数组包含某个特定_js数组是否包含某个

array.indexOf 判断数组是否存在某个,如果存在返回数组元素下标,否则返回-1 let arr = ['something', 'anything', 'nothing',...]; let index = arr.indexOf('nothing'); # 结果:2 array.includes(searchElement[, fromIndex]) 判断一个数组是否包含一个指定...参数:searchElement 需要查找元素。 参数:thisArg(可选) 从该索引处开始查找 searchElement。...numbers.includes(8); # 结果: true result = numbers.includes(118); # 结果: false array.find(callback[, thisArg]) 返回数组满足条件第一个元素...方法,该方法返回元素在数组下标,如果不存在与数组,那么返回-1; 参数:searchElement 需要查找元素

18.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

OC学习13——Foundation框架集合

来创建NSArray   参考NSArray文档,可以看到NSArray集合方法大致包含如下几类: 查询集合元素NSArray索引,即下标 根据索引取出NSArray集合元素 对集合元素整体调用方法...:方法追加单个元素 使用arrayWithObjects:方法将另一个数组中所有元素追加到原数组后面 NSArray判断集合是否包含指定元素方法就是依次用集合每一个元素与指定元素进行比较,而在集合中比较两个对象是否一样则是根据...1、NSSet是一个广泛使用集合,NSSet按Hash算法来储存集合元素,因此具有很好存取和查找性能。也正因为是才用Hash算法储存元素,NSSet不能保证元素添加顺序,顺序可能会发生变化。...判断标准是这样: 先调用hash方法得到该对象hashCode,然后根据该hashCode决定该对象底层hash表存储位置,如果该hashCode对应存储位置上没有存储元素,则系统将直接将该对象存储到对应位置上...实际上,NSDictoinary包含了一个allKeys方法,只是该方法返回NSArray类型,其实是该方法内部已经将NSSet集合进一步转化为NSArray了。

2.1K80

Excel实战技巧55: 包含重复列表查找指定数据最后出现数据

文章详情:excelperfect 本文题目比较拗口,用一个示例来说明,如下图1所示,是一个记录员工值班日期表,安排每天值班时,需要查看员工最近一次值班日期,以免值班时间隔得太近。...A2:A10,如果相同返回TRUE,不相同则返回FALSE,得到一个由TRUE和FALSE组成数组,然后与A2:A10所行号组成数组相乘,得到一个由行号和0组成数组,MAX函数获取这个数组最大...,也就是与单元格D2相同数据A2:A10最后一个位置,减去1是因为查找是B2:B10,是从第2行开始,得到要查找B2:B10位置,然后INDEX函数获取相应。...图2 使用LOOKUP函数 公式如下: =LOOKUP(2,1/($A$2:$A$10=$D$2),$B$2:$B$10) 公式,比较A2:A10与D2,相等返回TRUE,不相等返回FALSE...组成数组,由于这个数组找不到2,LOOKUP函数在数组中一直查找,直至最后一个比2小最大,也就是数组最后一个1,返回B2:B10对应,也就是要查找数据列表中最后

10.5K20

iOS开发·runtime+KVC实现多层字典模型转换(多层数据:模型嵌套模型,模型嵌套数组,数组嵌套模型)

但是,一些简单数据,我们也可以尝试自己来实现转换过程。 更重要是,有时候iOS面试时候,部分面试官会不仅问你某种场景会用到什么框架,更会问你如果要你来实现这个功能,你有没有解决思路?...笔者KVC系列为: iOS开发·KVC:字典转模型,防止因本地未定义字段(后台字段与本地字符串名不一致)导致数据转换过程奔溃 iOS开发·runtime+KVC实现字典模型转换 1....字典转模型:Runtime 思路1:利用运行时,首先要遍历参数字典, 如果我们获取得属性列表包含了字典 key,就利用 KVC 方法赋值,然后就完成了字典转模型操作。...思路2:利用运行时,遍历模型中所有属性,根据模型属性名,去字典查找key,取出对应,给模型属性赋值,然后就完成了字典转模型操作。...也是字典,把数组字典转换成模型. // 判断是否是数组 if ([value isKindOfClass:[NSArray class]]) {

2.5K10

iOS第三方有序字典框架——M13OrderedDictionary

iOS第三方有序字典框架——M13OrderedDictionary 一、引言         M13OrderedDictionary是拥有字典和数组功能第三方集合序列,开发者可以通过索引和键值来实现对其中元素访问...其实现了NSArrayNSDictionary所有方法,并且支持KVC与KVO。         M13OederedDictionary中提供方法包括: 1.创建与初始化。...*)unorderedEntriesAtIndices:(NSIndexSet *)indices; //示例包含无序字典集合 @property (nonatomic, readonly) NSDictionary...id))keyOfObjectIdenticalTo:(M13GenericType(ObjectType, id))object; //查找与某个元素相同元素下标 某个范围内进行查找...(ObjectType, id))object inRange:(NSRange)range; //符合查找block检测条件元素下标 /* 开发者可以block获取到遍历出 object与

2.6K20

Power Pivot如何查找对应求得费用?

Excel我们可以直接使用Vlookup或者Index和Match组合匹配到,然后下拉即可 VlookUp(A2,E1:F4,2,0)*RoundUp(B2,0) Index(F:F,Match(A2...但是这个条件会显得不一样,因为报价时间和发货时间是不等,因为一般报价都是发货前,所以筛选时候条件是报价时间<=发货时间,这时筛选时候会出现多个内容表。 ?...[单位价格kg]中最大一个,而不是最后一个。...这里我们需要查找是2个,一个是首重,一个是续重(单位价格),然后再去求运费。我们通过var变量来写,相对能够更清楚些。最终我们可以添加列里面写上如下公式。...因为这里涉及到一个首续重问题,所以最后求续重计费单位时候要去掉一个首重。

4.2K30

iOS小技能:参数名ASCII码从小到大排序、对象数组排序

NSPredicate应用指南之【从数组搜索特定条件元素】(从数组筛选type=8电子签名数据,避免遍历数组 certificateInfoList) //2.按照日期进行分组展示 //...重新按照日期进行分组组织数据 // 找出不重复日期 /** 对象操作: 针对数组情况 @distinctUnionOfObjects:返回指定属性去重后数组...@unionOfObjects:返回指定属性数组,不去重 属性不能为空,否则产生异常。...*arFiltered = [maTemp filteredArrayUsingPredicate:predicate];//以一定条件(特定日期)过滤maTemp数组,即进行大数据搜索。...*arFiltered = [listModels filteredArrayUsingPredicate:predicate];//以一定条件(特定日期)过滤maTemp数组,即进行大数据搜索。

1.8K10

iOS-UITableView 详解(一)

iOS-UITableView 详解 (一) ✨建议收藏,用到时候一查就明白了 UITableView可以说是iOS开发中最重要控件之一,它使用非常广泛,今天我们来学习UITableView使用...分组样式UITableViewStyleGrouped UITableViewCell UITableView每行都是一个UITableViewCell,UITableViewCell样式我们可以通过...textLabel,左下方显示detailTextLabel(默认灰色),imageView可选(显示最左边) }; 简单使用 接下来我们先来完成一个简单UITableView使用 首先看一下数据结构关系...cars_total.plist 可以看到数组里面包含若干个字典,字典里两个键值,一个是汽车数组,一个是标题,数组又是若干个字典,分别是icon键值和 name键值 接下来我们来创建汽车模型 CLCar.h...*)dict; +(instancetype)carWithDict:(NSDictionary *)dict; +(NSArray *)carsWithArray:(NSArray *)array

1.3K50

Colours–颜色库,包含100种预定义颜色和方法

简介 Colours–颜色库,包含各种100种预定义颜色和方法,可以简化颜色相关开发工作....最新示例: 点击下载 快速入门 安装 通过Cocoapods安装 pod 'Colours' 手动安装 把 Colours.h 和 Colours.m拖进你工程里,需要地方引入头文件即可: #import..."Colours.h" 使用 调色板,一组预定义颜色 具体可点击这里查看: 100个预定义颜色 使用预定义颜色 Colours 预定义了100 多种颜色,用法和使用iOS系统预定义方式一样:...RGBA数组与颜色相互转换 NSArray *colorArray = [[UIColor seafoamColor] rgbaArray];// 数组存储四个NSNumber对象分别代表RGBA四个...[kColoursRGBA_R]; HSBA数组与颜色相互转换 NSArray *colorArray = [[UIColor seafoamColor] hsbaArray];// 数组存储四个NSNumber

1.6K80

MagicalRecord,一个简化CoreData操作工具库

简介 项目主页:https://github.com/magicalpanda/MagicalRecord 实例下载:https://github.com/ios122/MagicalRecord 软件工程...一书中命名.这样一个对象,接口应该包含插入,更新和删除方法;再加上与底层数据库几乎直接对应属性....我们经常见到人们导入NSArrayNSDictionary`实例对象,但是对于所有符合键值编码(KVC)对象都是支持....(下图中 mappedKeyName为系统保留字段,用来指定要映射key,具体细节往下阅读即可) 供参考: 用户模型信息键和一个字典存储,每个实体,属性,和关系都关联这样一个字典.这个字典可以通过...如果一个CoreData模型属性或关系名与要导入数据某个键匹配,那你不需要做任何事 - 键对应会自动导入.

1.5K50

iOS面试题:NSCache,NSDictionaryNSArray区别

NSDictionary键是被拷贝并且需要是恒定。如果在一个键在被用于字典中放入一个后被改变,那么这个可能就会变得无法获取了。...它自动对内存警告做出反应并基于可设置成本清理自己。与NSDictionary相比,键是被retain而不是被拷贝。 NSCache回收方法是不确定文档也没有说明。...(这是PSPDFKit很多跟内存有关crash原因,使用自定义基于LRU链表缓存代码之前,我们起初使用NSCache存储事先渲染图片。)...实现该属性一个比较流行类是同时间加入NSPurgeableData,但是OS X 10.9之前,是非线程安全(没有信息表明这是否也影响到iOS或者是否iOS 7被修复了)。...对缓存来说,线程安全通常是很重要,因为开发者可能在某个线程读取数据,此时如果发现缓存里找不着指定键,那么就要下载该键对应数据了 *** 更多:iOS面试题合集

1.4K00

将判断 NSArray 数组是否包含指定元素时间复杂度从 O(n) 降为 O(1)

前言 NSArray 获取指定 元素 位置 或者 判断是否存在指定 元素 时间复杂度是 O(n)(包含特定元素时,平均耗时是 O(n/2),如果不包含特定元素,耗时是 O(n))。...php 数组 首先,我们先对 php 数组进行一些了解 php ,数组提供了一种特殊用法:关联键数组。...image 通过类似的思想,我们同样可以 将普通 NSArray 转换为 NSDictionary 将普通 NSArray 转换为 NSDictionary 下面,我们按照以下规则设计两个转换方法...: 字典 键 是数组存储 元素 该设计方式可以保证后续通过 objectForKey: 判断是否存在指定 元素 字典 是 数组 索引 该规则保证字典可以恢复为数组 // 将数组转为字典...+ (NSDictionary *)arr2Dic:(NSArray *)arr { // 注意,如果数组可能存在相同元素,请将 `NSValue` 切换到自定义类型

1.8K20

iOS-Foundation框架中常用

框架提供了什么样方法,能够达到什么效果,用到时候直接去API查找即可,避免因为不知道有这些方法,而走弯路。...NSUInteger length; 代表子串主串匹配长度. } NSRange; 如果没有找到:location 为NSUInteger最大, 也就是NSNotFound,length为...所以,判断主字符串是否包含子字符串,只需要判断返回NSRange结构体变量length是否为0就可以。 主串搜索子串.从后往前搜索. 第1次匹配子串....)index; // 获取数组中指定下标的元素 - (BOOL)containsObject:(ObjectType)anObject; // 判断数组是否包含指定元素 - (BOOL)isEqualToArray...NSArray数据持久化 有时我们需要将数组信息(数组元素)保存在沙盒中,进行数据持久化,当使用到时候重沙盒中读取 可以使用plist文件保存数组,即将数组信息存储到plist文件

1.7K100

iOS开发之蓝牙通讯 原

iOS开发之蓝牙通讯 一、引言         蓝牙是设备近距离通信一种方便手段,iPhone引入蓝牙4.0后,设备之间通讯变得更加简单。... *> *)serviceUUIDs; 初始化管理中心完成后,会回调代理的如下方法,我们必须实现如下方法: //这个方法可以获取到管理中心状态 - (void)centralManagerDidUpdateState... *)serviceUUIDs; //服务对象UUID数组寻找特定服务 - (void)discoverIncludedServices:(nullable NSArray *)includedServiceUUIDs forService:(CBService *)service; //一个服务寻找特征 - (void)discoverCharacteristics...(readonly, nonatomic) BOOL isPrimary; //包含自服务 @property(retain, readonly, nullable) NSArray<CBService

1.1K20

YYModel 源码剖析:关注性能

这个枚举可能是多选,所以使用了 NS_OPTIONS 而不是 NS_ENUM(编码规范)。 可以看到该枚举既包含了单选枚举,也包含了多选枚举,如何让它们互不影响?...然后转换时候直接从 hash 取值,将查找效率最大化提高。...这么做目的很简单,就是为了 json 数据源查找到某个目标值时,可以移动 _next 指针,将所有的相同映射属性统统赋值,从而达到不重复查找数据源相同路径目的。...八、从入口函数说起 回到开头,有几个方法是经常使用(当然包括 NSArrayNSDictionary 延展方法): + (nullable instancetype)yy_modelWithJSON...判断相等 - (BOOL)yy_modelIsEqual:(id)model; 方法实现,当两个待比较对象 hash 不同时,作者使用 if ([self hash] !

2K80

iOS通过NSUserDefaults实现简单应用间数据传递

iOSNSUserDefaults详解 NSUserDefaults是用于保存应用程序设置,应用信息等轻量级数据一个类,其本质是将数据写为plist文件形式保存在本地。...IOS,系统为每一个应用程序都默认创建了一个NSUserDefaults对象。...key inDomain:(NSString *)domain; 判断某个域中某个键值数据是否存在 注:目前iOS版本已经不能通过下面的方法应用间进行传!!!...二、三个特殊域及实现简单应用间信息传递 我们应该了解到,IOS,因为沙盒模式存在,应用间是不允许互相访问数据与传通信。...第二个工程,我们这样做:  NSDictionary * dic = [[NSUserDefaults standardUserDefaults]persistentDomainForName:NSGlobalDomain

88220
领券