Map&&iOS里的HashTable和MapTable
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map&&iOS里的HashTable和MapTable相关的知识,希望对你有一定的参考价值。
参考技术A 关于算法中的Map的理解典型的计算用户输入的字符出现频率最高的算法首先了解下Map:
在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):
-方法一
ios HasMap
NSHashTable
NSHashTable 是 NSSet 的通用版本,和 NSSet/NSMutableSet不同的是,NSHashTable具有以下特性:
NSHashTable是可变的,没有不可变的对应类
NSHashTable可以持有成员的弱引用
NSHashTable可以在加入成员时进行copy操作
NSHashTable可以存储任意的指针,通过指针来进行相等性和散列检查
基本用法
NSHashTable *hashTable = [NSHashTable hashTableWithOptions:NSPointerFunctionsCopyIn];
[hashTable addObject:@"hello"];
[hashTable addObject:@10];
[hashTable addObject:@"world"];
[hashTable removeObject:@"world"];
NSLog(@"Members: %@", [hashTable allObjects]);
NSMapTable
NSMapTable是NSDictionary的通用版本,NSMapTable具有下面特性:
NSMapTable是可变的,没有不可变的类
NSMapTable可以持有键和值的弱引用,当键或值当中的一个被释放时,整个这一项就会被移除掉
NSMapTable可以在加入成员时进行copy操作
NSMapTable可以存储任意的指针,通过指针来进行相等性和散列检查
基本用法
id delegate = ...;
NSMapTable *mapTable = [NSMapTable mapTableWithKeyOptions:NSMapTableStrongMemory valueOptions:NSMapTableWeakMemory];
[mapTable setObject:delegate forKey:@"foo"];
NSLog(@"Keys: %@", [[mapTable keyEnumerator] allObjects]);
NSPointerArray
NSPointerArray是NSArray的通用版本,NSPointerArray具有下面特性:
和传统Array一样,用于有序的插入或移除
与传统Array不同的是,可以存储NULL,并且NULL还参与 count的计算
与传统Array不同的是, count可以set,如果直接set count,那么会使用NULL占位
可以使用weak来修饰成员
成员可以是所有指针类型
遵循 NSFastEnumeration,可以通过 for...in来进行遍历
对比
传统的集合类型都有哪些短板:
放到集合中的对象,只能强引用
如果想要弱引用,要先用 NSValue打包
不能放入 nil
总结
永远先从最高的抽象层次去尝试解决问题
如果碰到的问题包含内存管理需求,那么 NSHashTable和 NSMapTable值得一试
Map集合&&异常处理&&file类
Map集合
*定义:
*集合定义方法:
Map<键名,键值> 变量名=new Map的子类<键名,键值>(); 键名不能重复
Map<String,Integer> map=new HashMap<String,Integer>();
*迭代:
例:对Map集合进行添加并将其进行迭代输出
第一种方法: entrySet() 将map集合中键名和键值之间的映射关系进行封装
第二种方法: map集合中 keySet() 获取键名 get() 获取键值
第三种方法: for(数据类型 变量名 : 数组或者集合名){ keySet() }
异常处理
*throw 抛出异常
1 throw 抛的是提示文本 必须写 new Exception 红色的是异常的名字 exception是最大的异常名字
2 throws 抛的是方法 必须写 Exception
*try() catch() 捕捉异常
*用法区别: 在主方法中 用 try...cattch, 其余地区能抛异常 就抛异常。
File类
*概念: File 类是 文件和目录路经营的抽象表示形式 f:/day
*成员变量:pathSeparator 路径分割符 ;
separator 目录分割符 /
*构造方法: File(String parent,String child)
File(file parent,file child)
File(String parent,file child)
File(file parent,String child)
* 最常用的是 :直接创建路径对象
*File类 方法
* createNewFile() 创建文件
* delete() 删除文件 / 删除文件夹
* mkdirs() 创建文件夹
* length() 获取文件中的字节数
* getName() 获取目录下最后一个文件名
* getParentFile() 获取父路径
* endwith() 判断是否为**结尾的
* listFiles() 获取功能
以上是关于Map&&iOS里的HashTable和MapTable的主要内容,如果未能解决你的问题,请参考以下文章