快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

HashMap怎么在Java中使用

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

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 {
 int hash;
 K key;
 V value;
 Node next;
}
package com.liuyuhe;

public class MyHashMap {
 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

看完上述内容,你们掌握HashMap怎么在Java中使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


文章标题:HashMap怎么在Java中使用
当前地址:http://6mz.cn/article/jchpsj.html

其他资讯