java – 具有空键和空值的HashMap
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 具有空键和空值的HashMap,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2224字,纯文字阅读大概需要4分钟。
内容图文
请考虑以下代码:
import java.util.*;
class Employee {
String name;
public Employee(String nm) {
this.name=nm;
}
}
public class HashMapKeyNullValue {
Employee e1;
public void display(){
Employee e2=null;
Map map=new HashMap();
map.put(e2, "25");
System.out.println("Getting the Value When e2 is set as KEY");
System.out.println("e2 : "+map.get(e2));
System.out.println("e1 : "+map.get(e1));
System.out.println("null : "+map.get(null));
map.put(e1, "");
System.out.println("Getting the Value when e1 is set as KEY");
System.out.println("e2 : "+map.get(e2));
System.out.println("e1 : "+map.get(e1));
System.out.println("null : "+map.get(null));
map.put(null, null); // null as key and null as value
System.out.println("Getting the Value when setting null as KEY and null as value");
System.out.println("e2 : "+map.get(e2));
System.out.println("e1 : "+map.get(e1));
System.out.println("null : "+map.get(null));
map.put(null, "30");
System.out.println("Getting the Value when setting only null as KEY");
System.out.println("e2 : "+map.get(e2));
System.out.println("e1 : "+map.get(e1));
System.out.println("null : "+map.get(null));
}
public static void main(String[] args) {
new HashMapKeyNullValue().display();
}
}
程序的输出是:
Getting the Value When e2 is set as KEY
e2 : 25
e1 : 25
null : 25
Getting the Value when e1 is set as KEY
e2 :
e1 :
null :
Getting the Value when setting null as KEY and null as value
e2 : null
e1 : null
null : null
Getting the Value when setting only null as KEY
e2 : 30
e1 : 30
null : 30
这里e1,e2和null如何作为键相互关联.是否所有三个都分配给相同的哈希码?如果是,为什么?
由于所有三个看起来都不同,一个值的变化会改变另一个.这是否意味着只有一个密钥条目被赋予HashMap e1,e2或null,因为所有条目都被视为相同的密钥.
解决方法:
当null作为键传递时,HashMap不调用hashcode,而null键作为特殊情况处理.
放方法
HashMap将空键放在存储桶0中,并将null映射为传递值的键. HashMap通过链表数据结构来完成它. HashMap在内部使用链表数据结构.
HashMap使用的链表数据结构(HashMap.java中的静态类)
static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
final int hash;
}
在Entry类中,K设置为null,值映射到put方法中传递的值.
获取方法
而在Hashmap get方法中,检查key是否作为null传递.在存储桶0中搜索null键的值.
因此,一个hashmap对象中只能有一个空键.
内容总结
以上是互联网集市为您收集整理的java – 具有空键和空值的HashMap全部内容,希望文章能够帮你解决java – 具有空键和空值的HashMap所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。