一、基本知识
Hashtable它是一个散列表,它存储的内容是键值对映射。
Hashtale继承于Dictionary,实现了Map、Cloneable、Java.io.Serializable接口。
Hashtable的函数是同步的,这意味着它是线程安全的。它的key、value都不可以为null。此外,Hashtable中的映射不是有序的。
二、优势所在
将数据存储在数组中,并通过数组下标搜索会出现两个问题:
1.如果所有元素是16-bits且不带正负号的整数,我们可以用一个拥有65536个元素的arry A,初值全部为0,每个元素值代表相应元素出现的次数(如果插入元素i,就执行A[i]++,如果删除元素i,就执行A[i]--,如果搜查元素i,就检查A[i]是否为0)。于是,不论是插入、删除、搜索每个操作都在常数时间内完成。但是,若元素是32-bits,我们所准备的arry A的大小就必须是2^32 = 4GB,这就大的不太切合实际。
2.如果元素形态是字符串或其他,而非整数,将无法被拿来作为arry的索引。
此问题的解决:
例如:数值1234是由阿拉伯数字1,2,3,4构成的一样,字符串“jjhou”是由字符‘j’,‘j’,‘h’,‘o’,‘u’构成,那么,既然数值1234是1*10^3+2*10^2+3*10^1+4*10^0,我们也可以将字符编码,每个字符以一个7-bits数值表示(也就是ASCII编码),从而将字符串“jjhou”表现为:
'j'*128^4 + '