一、哈希表:
1.基本介绍:
散列表(Hashtable,也叫哈希表)是根据关键码值(Key value)而直接进行访问的数据结构。也就是说它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
2.代码实现:
class Emp{
public int id;
public String name;
public Emp next;
public Emp(int id,String name){
super();
this.id = id;
this.name = name;
}
}
class EmpLinkedList{
private Emp head;
public void add(Emp emp){
if(head == null){
head = temp;
return;
}
Emp curEmp = head;
while(true){
if(curEmp.next==null){
break;
}
curEmp = curEmp.next;
}
curEmp.next = emp;
}
public void list(){
if(head==null){
System.out.println("当前链表为空");
return;
}
Emp curEmp = head;
while(true){
System.out.println(curEmp.id+curEmp.name);
if(curEmp.next==null){
break;
}else{
curEmp = curEmp.next;
}
}
}
public Emp findEmpById(int id){
if(head==null){
System.out.println("链表为空");
return null;
}
Emp curEmp = head;
while(true){
if(curEmp.id == id){
break;
}
if(curEmp.next==null){
curEmp = null;
}
curEmp = curEmp.next;
}
return curEmp;
}
}
class HashTab{
private EmpLinkedList[] empLinkedListArray;
public HashTab(int size){
this.empLinkedListArray = new EmpLinkedList[size];
for(int i = 0;i<size;i++){
this.empLinkedListArray[i] = new EmpLinkedList();
}
}
public findEmpById(int id){
int empLinkedListNO = hashFun(id);
Emp emp = empLinkedListArray[empLinkedListNO].findEmpById(id);
if(emp==null){
System.out.println("空");
}else{
System.out.println(emp);
}
}
public void add(Emp emp){
int empLinkedListNO = hashFun(emp.id);
empLinkedListArray[empLinkedListNO].add(emp);
}
public void list(){
for(int i = 0;i<size;i++){
empLinkedArray[i].list();
}
}
public int hashFun(int id){
return id % size;
}
}