亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HashMap怎么在Java中使用

發布時間:2021-06-16 14:12:33 來源:億速云 閱讀:163 作者:Leah 欄目:編程語言

HashMap怎么在Java中使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

HashMap的基本結構

package com.liuyuhe;

public class Node {
 int hash;
 Object key;
 Object value;
 Node next;
}
package com.liuyuhe;

public class MyHashMap {
 Node[] table; //位桶數組
 int size; //存放鍵值對的個數
 public MyHashMap() {
 table=new Node[16];
 }
 
}

put()方法存儲鍵值對

 public void put(Object key,Object value) {
 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];
 Node iterLast=null;
 if(temp==null) {
  table[newNode.hash]=newNode;
 }else {
  while(temp!=null) {
  if(temp.key.equals(key)) {
   temp.value=value;
   return;
  }else {
   iterLast=temp;
   temp=temp.next;
  }
  }
  iterLast.next=newNode;
 }
 ++size;
 }
 public int myHash(int v,int length) {
 System.out.println("hash in myHash: "+(v&(length-1)));
 return v&(length-1);
 }

重寫toString()方法打印Map內容

@Override
 public String toString() {
 StringBuilder sb = new StringBuilder();
 sb.append("{");
 boolean isFirst=true;
 //遍歷數組
 for(int i=0;i<table.length;++i) {
  //遍歷鏈表
  Node temp = table[i];
  while(temp!=null) {
  if(isFirst) {
   isFirst=false;
   sb.append(temp.key+":"+temp.value);
  }else {
   sb.append(","+temp.key+":"+temp.value);
  }
  temp=temp.next;
  }
 }
 sb.append("}");
 return sb.toString();
 }

get()方法查找鍵值對

public Object get(Object key) {
 int hash=myHash(key.hashCode(),table.length);
 Object value=null;
 if(table[hash]!=null) {
  Node temp=table[hash];
  while(temp!=null) {
  if(temp.key.equals(key)) {
   value=temp.value;
   break;
  }else {
   temp=temp.next;
  }
  }
 }
 return value;
 }

增加泛型(完整代碼)

package com.liuyuhe;

public class Node<K,V> {
 int hash;
 K key;
 V value;
 Node next;
}
package com.liuyuhe;

public class MyHashMap<K,V> {
 Node[] table; //位桶數組
 int size; //存放鍵值對的個數
 public MyHashMap() {
 table=new Node[16];
 }
 public void put(K key,V value) {
 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];
 Node iterLast=null;
 if(temp==null) {
  table[newNode.hash]=newNode;
 }else {
  while(temp!=null) {
  if(temp.key.equals(key)) {
   temp.value=value;
   return;
  }else {
   iterLast=temp;
   temp=temp.next;
  }
  }
  iterLast.next=newNode;
 }
 ++size;
 }
 @SuppressWarnings("unchecked")
 public V get(K key) {
 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;
  }else {
   temp=temp.next;
  }
  }
 }
 return value;
 }
 public int myHash(int v,int length) {
 System.out.println("hash in myHash: "+(v&(length-1)));
 return v&(length-1);
 }
 @Override
 public String toString() {
 StringBuilder sb = new StringBuilder();
 sb.append("{");
 boolean isFirst=true;
 //遍歷數組
 for(int i=0;i<table.length;++i) {
  //遍歷鏈表
  Node temp = table[i];
  while(temp!=null) {
  if(isFirst) {
   isFirst=false;
   sb.append(temp.key+":"+temp.value);
  }else {
   sb.append(","+temp.key+":"+temp.value);
  }
  temp=temp.next;
  }
 }
 sb.append("}");
 return sb.toString();
 }
}

看完上述內容,你們掌握HashMap怎么在Java中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周至县| 海盐县| 怀来县| 龙里县| 肇庆市| 铜川市| 盐亭县| 孟村| 绥棱县| 忻州市| 安西县| 偃师市| 安吉县| 安化县| 六盘水市| 巩义市| 罗城| 德安县| 习水县| 建平县| 东阿县| 张掖市| 张家口市| 上高县| 钟山县| 收藏| 土默特左旗| 永安市| 象州县| 治县。| 巨野县| 黑河市| 科技| 榆社县| 丹凤县| 贵州省| 昌邑市| 合阳县| 德昌县| 芜湖市| 东乡族自治县|