ChainingHash
public class ChainingHash<Key,Value>{
private int N;
private int M;
private doublylinked<Key,Value>[] s;
public ChainingHash(int M){
this.M = M;
s = new doublylinked [M];
for(int i=0;i<M;i++){
s[i] = new doublylinked();
}
}
public int hash(Key key){
return (key.hashCode() & 0x7fffffff)%M;
}
private void put(Key key,Value val){
s[hash(key)].put(key, val);
}
private Value get(Key key){
return s[hash(key)].get(key);
}
private void delet(Key key){
s[hash(key)].delet(key);
}
public void print(){
for (int i = 0;i<M;i++){
s[i].print();
System.out.println(" ");
}
}
public class doublylinked<Key,Value>{
private Node first;
public doublylinked(){
first = null;
}
private class Node{
Key key;
Value val;
Node next,last;
public Node(Key key,Value val,Node next,Node last){
this.key = key;this.val = val;this.next = next; this.last = last;
}
}
public void put(Key key,Value val){
for(Node x = first;x!= null;x= x.next){
if(key.equals(x.key)){
x.val = val;
return;
}
}
if(first == null){
first = new Node(key,val,null,null);
}
else{
first.last = new Node(key,val,first,null);
first = first.last;
}
}
public Value get(Key key){
for(Node x = first;x!= null;x= x.next){
if(key.equals(x.key)){
return x.val;
}
}
return null;
}
public void delet(Key key){
for(Node x = first;x!= null;x= x.next){
if(key.equals(x.key)){
x.last.next = x.next;
return;
}
}
return;
}
public void print(){
int i = 0;
if(first == null){
System.out.println(" ");
return;
}
for(Node x = first;x!= null;x= x.next){
i++;
System.out.println(x.key+" "+x.val );
}
}
}
public static void main(String[] args) {
ChainingHash<String, Integer> st = new ChainingHash<String, Integer>(517);
int N = args.length;
for (int i = 0;i < N; i++) {
String key = args[i];
st.put(key, i);
}
// print keys
st.print();
}
}
ChainingHash的更多相关文章
随机推荐
- python- Socket & Mysql 重要知识点
socket : 解决粘包 并发编程 生产者消费者模型 进程池和线程池 回调函数 GIL全局解释器锁(理论) ...
- MySQL存储引擎之Myisam和Innodb总结性梳理-转
原文链接:https://www.cnblogs.com/kevingrace/p/5685355.html 谢谢楼主 Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 ...
- WDA基础六:字段,表等visiable,enable,read_only控制
今天主要讲一下布局控制:(visiable,enable,read_only) visiable:可见性,控制字段,组件,分组等是否现实在界面上.一般按条件来控制隐藏的可以在CONTEXT NODE里 ...
- linux删除文件后不释放磁盘的问题
1. 用df 检查发现根目录可用空间越为200M # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvde1 .9G .4G 232M ...
- 五、持久层框架(Hibernate)
一.分页查询 使用Criteria进行分页查询,无论是使用Oracle,MySQL,NoSQL,DB2,分页查询的代码写法都相同. 分页查询代码示例: package com.demo.test; i ...
- 从线程模型的角度看Netty的高性能
转载:Netty(二) 从线程模型的角度看 Netty 为什么是高性能的? 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包. 比 ...
- CNN autoencoder 先降维再使用kmeans进行图像聚类 是不是也可以降维以后进行iforest处理?
import keras from keras.datasets import mnist from keras.models import Sequential from keras.layers ...
- CentOS和AIX查看系统序列号
一.CentOS查看系统序列号 dmidecode -t dmidecode--将DMI数据库中的信息解码,以可读的文本方式显示:该命令需要root权限. -t 1--DMI数据库包含包括BIOS.系 ...
- python http 请求 响应 post表单提交
1. 查看请求 响应情况 print(response.text) print(response.headers) print(response.request.body) print(respons ...
- C++中类的静态成员与实例成员的区别
C++中类的静态成员与实例成员的区别 1.有static修饰的成员变量或成员函数称为静态成员. 2.在内存中,类的静态数据成员占有一块特定的内存空间,被该类的所有实例(对象)共享.而同一个类的不同对象 ...