java複習之hash表的實現

散列表的實現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;
    }



}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章