public static void main(String[] args){
Map<Integer, Object>tables = new Hashtable<Integer, Object>()
Thread add = new Thread(new ThreadAdd(tables))
Thread del = new Thread(new ThreadDel(tables))
Thread count = new Thread(new ThreadCount(tables))
//启动线程
add.start()
del.start()
count.start()
}
/**
*添加对象线程
*/
private static class ThreadAdd implements Runnable{
private Map<Integer, Object>table
public ThreadAdd(Map<Integer, Object>tables){
this.table=tables
}
public void run() {
// TODO Auto-generated method stub
for(int i=0i<10i++){
table.put(i, new Object())
System.out.println("添加对象,序号为:"+i)
}
}
}
/**
*删除对象线程
*/
private static class ThreadDel implements Runnable{
private Map<侍拿Integer, Object>table
public ThreadDel(Map<Integer, Object>table){
this.table=table
}
public void run() {
// TODO Auto-generated method stub
for(int i=0i<10i++){
try {
Thread.sleep(100)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
table.remove(i)
System.out.println("移除对象,序号为:"+i)
}
}
}
/**
*统计线程
*/
private static class ThreadCount implements Runnable{
private Map<Integer, Object>table
public ThreadCount(Map<Integer, Object>table){
this.table=table
}
public void run() {
// TODO Auto-generated method stub
for(int i=0i<10i++){
try {
Thread.sleep(50)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
System.out.println("当前队列还此亮剩"+table.size()+"个对象"森谈宽)
}
}
}
}
这是我的写的demo,不知道符合不符合你的意思,大家共同交流共同进步。
算法设计已知一个含有100个记录的表,关键字为中国人姓氏的拼音,请给出此表的一个哈希表设计方案,要求在等概率情况下查找成功的平均查找长度不超过3。
(1) 根据平均查找长度不超过3,确定装填因子α;
snl≈1/2(1+(1/(1-α))){使用线性探测再散列解决冲突}
因snl<裂大慎=3,所以α至少为0.8,取α=0.8.
(2) 根据α确定表长
由α=(表中添入的记录数)/(哈希表的长度)
所以 哈希表的长度=100/α=125
取肆敬表长=150;
(3) 选取哈希函数
H(key)=key MOD 149
(4) key 的选取方法。
设大写字母在表中用1..26 表示,小写字母用27--52 表示。每个人的姓名取四个字
母(两字姓名取首尾两个字母,三字姓名取各字拼音第一仿念个字母,中间字取首尾两
个拼音字母)。
将前两个拼音字母的序号并起来,后两个也并起来, 然后相加形成关键字。要求姓名
的第一个拼音字母要大写,如姓名'王丽明'拼音为'Wang liming',取出四个拼音字母
为'W,l,i,m',个字母序号依次为 23 38 35 39,组成关键字为 2338+3539=5877,该姓
名的哈希地址为 5877 MOD 149=66。
(5) 用线性探测再散列处理冲突。
这是设计原理,别的要求没拉:(
看了一下,这个实现起来有点麻烦,因为写入注册表里面,要有很多内容写入,还要识别文件的各种信息,批处理估计实现不了。你可以在闹搏注册表中搜索一下这个规则里面的文件信息,你就液空祥知道了,写入的内容太多太杂,不好弄亏猛。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)