真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java手工實(shí)現(xiàn)HashMap

import java.util.HashMap;
import java.util.Map;

public  class test {

node[] table;//核心位桶數(shù)組
int size; //存放的鍵值對(duì)數(shù)

public test(){
    table =new node[16];  //長(zhǎng)度是2的整數(shù)冪

}
public void put(Object key,Object value)  //定義節(jié)點(diǎn)對(duì)象
{
    node newnode=new node();
    newnode.hash=myHash(key.hashCode(),table.length);
    newnode.key=key;
    newnode.value=value;
    newnode.next=null;

    node temp=table[newnode.hash];
    boolean flag=false;
    node nodelast=null;//正在遍歷的最后一個(gè)元素
    if(temp==null)  //數(shù)組此處為空,則直接放新節(jié)點(diǎn)
    {
        table[newnode.hash]=newnode;
    }
    else //若不為空,則遍歷鏈表,如果重復(fù)則替換,不重復(fù)則添加到后面
    {

        while(temp!=null)
        {
            if(temp.key.equals(key))  //如果鍵重復(fù),只需要改變value
            {
                flag=true;
                System.out.println("key重復(fù)了");
                temp.value=value;
                break;
            }
            else
            {
            nodelast=temp;    //當(dāng)temp為空時(shí),保存最后一個(gè)元素
            temp=temp.next;   
            }
        }
        if(flag==false)
        {
            nodelast.next=newnode;
        }

    }
    size++;
}

public int myHash(int v,int length)  //得到Hash值,根據(jù)傳入鍵值和數(shù)組長(zhǎng)度計(jì)算Hash值
{
    System.out.println(v&(length-1));
    return v&(length-1);
}

public V get(K key)  //獲得鍵對(duì)應(yīng)的值,通過(guò)鍵的Hash值找到數(shù)組對(duì)應(yīng)位置,再遍歷鏈表查找鍵對(duì)應(yīng)的值
{
    int hash=myHash(key.hashCode(),table.length);
    V value=null;   
    if(table[hash]!=null)
    {
        node temp=table[hash];
        while(temp!=null)
        {
            if(temp.key.equals(key))
            {
                value=(V) temp.value;
                break;
            }
            temp=temp.next;
        }
    }
    return (V)value;
}
public int getSize()  //返回鍵值對(duì)個(gè)數(shù)
{
    return size;
}
public String toString()  //重寫(xiě)toString方法
{
    StringBuilder s= new StringBuilder();
    s.append("{");
    for(int i=0;i t =new test<>();
    t.put(10, "ad");
    t.put(19, "aa");
    t.put(8, "add");
    t.put(3,"ff");
    System.out.println(t);

    System.out.println(t.get(19));
    System.out.println(t.getSize());
}

}

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的山陽(yáng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!


標(biāo)題名稱:java手工實(shí)現(xiàn)HashMap
當(dāng)前URL:http://weahome.cn/article/pisdhd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部