有时候为什么不用数组存储然后在数组里查询数值呢?字典(也称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。对于频繁的查询和大型的数据集来说,使用字典比数组要快很多。实际上字典非常快。参考资料:《Objective-C基础教程》
分类:
移动开发 时间:
2015-09-01 10:39:08
阅读次数:
197
要了解HashMap的实现原理,首先得知道散列表(哈希表).一、散列表 散列表是一种可以快速地查找所需要的对象的数据结构,散列表为每个对象计算一个整数,称为散列码(hash code),散列码是由对象的实例域产生的一个整数。具有不同的数据域对象将产生不同的散列码,java中的散列码是通过has...
分类:
其他好文 时间:
2015-08-30 19:20:29
阅读次数:
338
在多线程中,如果要并发的修改一个数据结构,那么很有可能会破坏这个数据结构。例如,一个线程可能要向一个散列表中插入一个元素,假如在调整各个桶之间的链接关系时被剥夺了控制权,而此时正好有另外一个线程正在遍历链表,则可能会产生异常或者死循环。
可以通过锁来保护共享的数据结构,但是选择线程安全的实现作为替代可能更容易一些。
一、旧的线程安全的集合
任何集合类都可以通过使用同步包装器变成线程安全的:...
分类:
编程语言 时间:
2015-08-29 09:51:01
阅读次数:
230
WeakHashMap继承于AbstractMap,同时实现了Map接口。
和HashMap一样,WeakHashMap也是一个散列表,存储的内容也是键值对 key-value映射,并且键和值都可以是null。WeakHashMap的键都是弱键,给定一个键,其映射的存在并不阻止垃圾回收器对该键的丢弃,使该键成为可终止,然后被回收。弱键的原理就是Entry继承了WeakReference接口,当G...
分类:
编程语言 时间:
2015-08-29 06:25:32
阅读次数:
502
纸上得来终觉浅,绝知此事要躬行
--陆游 问渠那得清如许,为有源头活水来 --朱熹
HashMap是一个散列表,存储的内容是键值对(key-value)映射。HashMap继承于AbstractMap并实现了Map、Cloneable、Serializable接口。
(1)HashMap不是线程安全的,同时key-value都可以为null,并且是无序的。
(2)H...
分类:
编程语言 时间:
2015-08-29 00:51:26
阅读次数:
307
纸上得来终觉浅,绝知此事要躬行
--陆游 问渠那得清如许,为有源头活水来 --朱熹
和HashMap一样,Hashtable也是一个散列表,存储的内容也是键值对key-value映射。它继承了Dictionary,并实现了Map、Cloneable、io、Serializable接口。Hashtable是线程安全的,并且key和value不能为空,并且不是有序的。
H...
分类:
编程语言 时间:
2015-08-29 00:49:11
阅读次数:
273
字典:无序的集合,通过键来存取
特性:
1.通过键而不是通过偏移量来读取
2.任意对象的无序集合
3.可变长、异构、任意嵌套
4.属于可映射类型
5.对象引用表(散列表)
常见操作:
操作
解释
d={}
空字典
d={'a':1,'b':2,'c':'3'}
两项目字典
d={'a':1,{'b':2}}
嵌套
d=...
分类:
编程语言 时间:
2015-08-28 17:52:45
阅读次数:
162
在进程描述符中进入几个字段来表示进程之间的父子关系和兄弟关系。
图3-4显示了一组进程间的亲属关系。
表3-4:建立非亲属关系的进程描述符字段
在某些情况下,内核必须能从进程的PID到处对应的进程描述符指针,顺序扫描进程链表并检查进程描述符的pid字段是可行但相当低效的。为了加速查找,...
分类:
系统相关 时间:
2015-08-27 18:54:54
阅读次数:
173
散列表的实现通常叫做散列hashing。散列是一种用于以常数平均时间执行插入、删除和查找的技术。但是,那些需要元素间任何排序信息的树操作将不会得到有效的支持。理想的散列表数据结构只不过是一个包含一些项的具有固定大小的数组。通常查找是对项的某个部分(数据域)进行的,这部分叫做关键字。例如,项可以由一个串(作为关键字)和其它一些数据域组成。我们把表的大小记作TableSize,并将其理解为散列数据结构...
分类:
编程语言 时间:
2015-08-27 00:30:40
阅读次数:
150