NSString类里有个hash

实际编程总会涉及到比较两个字符串的内容,一般会用

[string1 isEqualsToString:string2]

来比较两个字符串是否一致。对于字符串的isEqualsToString方法,需要逐个比较字符串的内容,是比较耗时的操作。

偶然间我发现NSString类里有个hash方法,作用是返回NSString实例的散列值。众所周知,内容相同的字符串拥有相同的散列值,内容不同的字符串拥有不同的散列值。所以完全可以根据字符串散列值来判断两个字符串是否一致。

于是上面比较字符串的写法可以这么写(一般比较字符串是if语句的判断条件):

if ([string1 hash] == [string2 hash]){ }

时间: 2024-12-13 16:02:54

NSString类里有个hash的相关文章

黑马程序员---OC基础6【内存管理】【手动内存管理】【单、多个对象的内存管理】【*@property参数】【@class的使用】【NSString类的内存管理】【autorelease使用】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [内存管理] 1.内存管理概念 由于移动设备内存及其有限,所以每个app所占的内存也是有限的 需要回收一些不使用的空间 2.OC内存管理的范围 管理任何继承NSOject的对象,对其他的基本数据类型无效 主要管理堆区中的对象的内存管理   3.内存管理的原理 1)对象所有权概念 任何对象都可以能拥有一个或多个所有者,只要一个对象至少还拥有一个所有者,他就会继续存在 cocoasu所有权策略 任何自

黑马程序员----NSString类

NSString类 @“123456” 也是一个类,其类就是NSString类: 1.最简单的创建字符串的方式 NSString *name = @"jack"; 2.创建OC字符串的另一种方式:利用NSString类的类方法  stringWithFormat: NSString *str = [NSString stringWithFormat:@"My age is %d and no is %d and name is %@", age, no, name]

黑马程序员--Foundation框架之--NSString类以及它的子类NSMutableString类

继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutableString是可变的,和Java中的StringBuilder一样. 一.NSString对象 在OC中,NSString对象是非常重要的一个对象,也是最基础的一个对象,是用来处理字符串的常用类. 下面来看一下NSString的一些方法的使用: 1.创建的方法 // 字符串的创建方式 NSString *s

NSString类

1 //以separator为节点分割字符串 2 - (NSArray *)componentsSeparatedByString:(NSString *)separator; 3 4 //NSString转换为const char * 5 NSString *str = @"abc"; 6 const char *cstr = [str UTF8String]; NSString类,布布扣,bubuko.com

黑马程序员---OC基础2【对象储存】【函数和方法的区别】【方法和对象关系】【对象作为方法参数】【NSString类介绍】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [对象储存] 1.对象的储存细节 [Car  new] new做了3件事 1)向计算机申请存储空间 2)给类中的每一个成员初始化值 3)返回新申请的空间的首地址 (1).申请的空间在内存的哪个区? new 的时候申请的空间内存的堆区(程序动态分配的内存空间) 当new内存的布局: 初始化的时候: 如果实例变量是基本数据类型,此时给初始为0, 如果是字符串类型此时初始化为null (2).实例变

NSString类的使用及其内部方法

1,创建对象的两种方法 stringWithFormat initWithFormat 2,求字符串长度 length NSUInteger  leng = [ str   length ] 3,获取字符串的某个字符 characterAtIndex: unichar  leng = [ str  characterAtIndex:  ]; 4,判断是否以指定的字符串开头或结尾 开头: BOOL isPrefix = [str hasPrefix:@"http"]; 结尾: BOOL

Eclipse里选中一个变量后,这个类里的该变量不变色了?

Eclipse里选一个变量后,这个类里的该变量不变色了. 1.使用“Alt+Shift+O”对该提示功能的开/关切换 2.可以在以下设置选中后的文本提示颜色  window--> Preferences--> General--> Editors--> Text Editors--> Annotations Eclipse里选中一个变量后,这个类里的该变量不变色了?

NSString类中三个用于获取子字符串的方法:

NSString类中提供了这样三个方法用于获取子字符串: – substringFromIndex: – substringWithRange: – substringToIndex: 它们该怎么使用呢?见下面代码即可知道. NSString *str = @"12345"; -substringFromIndex: 以指定索引开始(包括指定索引的字符,索引从0开始),并包括之后的全部字符: // NSString *subString0 = [str substringFromInd

【ThinkingInC++】43、内建类型封装在一个类里

内建类型 C++数据类型包括: 1)内置的基本数据类型,如整型.浮点型.布尔型等,均有一个关键字对应,如int,float,bool 2)C++ STL(标准库)引入了一些扩展类型,有时候也归为基本类型,比如字符串类型(string),复数类型(complex),向量(vector)等. 3)其他,即用户自定义类型,也叫抽象数据类型(ADT),即用户通过class,struct,enum定义的各种数据类型. /** * 书本:[ThinkingInC++] * 功能:把一个内建类型封装在一个类里