散列表的實現java版
package learn;
import java.util.Arrays;
public class HashTab {
public static void main(String[] args) {
HashT hashT = new HashT(8);
hashT.add(new Emp(12,"張三"));
hashT.add(new Emp(7,"李四"));
hashT.add(new Emp(8,"王五"));
hashT.add(new Emp(16,"王六"));
hashT.list();
// System.out.println(hashT);
}
}
class Emp{
public int id;
public String name;
public Emp next;
public Emp(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", name='" + name + '\'' +
", next=" + next +
'}';
}
}
class LinklistDemo{
private Emp head;
public void add(Emp emp){
if(head==null){
head=emp;
}else {
Emp emp1=head;
while (emp1.next!=null){
emp1=emp1.next;
}
emp1.next=emp;
}
}
public void list(){
if(head==null){
System.out.println("鏈表爲空!");
return;
}else {
Emp emp = head;
while (emp.next!=null){
System.out.println(emp);
emp=emp.next;
}
System.out.println(emp);
}
}
@Override
public String toString() {
return "LinklistDemo{" +
"head=" + head +
'}';
}
}
class HashT{
private int size;
private LinklistDemo[] link;
public HashT(int size) {
this.size = size;
link = new LinklistDemo[size];
for(int i=0;i<size;i++){
link[i]=new LinklistDemo();
}
}
@Override
public String toString() {
return "HashT{" +
"size=" + size +
", link=" + Arrays.toString(link) +
'}';
}
public void add(Emp emp){
int num=hashMethod(emp.id);
link[num].add(emp);
}
public void list(){
for(int i=0;i<size;i++){
link[i].list();
}
}
public int hashMethod(int id){
return id%size;
}
}