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è)合作伙伴!