浅谈HashMap、HashTable的key和value是否可为null
作者:qingmengwuhen1 时间:2022-03-12 19:57:47
结论:
HashMap对象的key、value值均可为null。
HahTable对象的key、value值均不可为null。
且两者的的key值均不能重复,若添加key相同的键值对,后面的value会自动覆盖前面的value,但不会报错。
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();//HashMap对象
Map<String, String> tableMap = new Hashtable<String, String>();//HashTable对象
map.put(null, null);
System.out.println("hashMap的[key]和[value]均可以为null:" + map.get(null));
try {
tableMap.put(null, "3");
System.out.println(tableMap.get(null));
} catch (Exception e) {
System.out.println("【ERROR】:hashTable的[key]不能为null");
}
try {
tableMap.put("3", null);
System.out.println(tableMap.get("3"));
} catch (Exception e) {
System.out.println("【ERROR】:hashTable的[value]不能为null");
}
}
}
运行结果:
hashMap的[key]和[value]均可以为null:null
【ERROR】:hashTable的[key]不能为null
【ERROR】:hashTable的[value]不能为null
补充知识:hashmap判断是否存在key时,使用get(key)==null判断还是containsKey?
java中hashmap(key,value)的key和value都可以是null
我们看hashmap中get()和containskey()的方法:
public V get(Object key) {
Node
结论
如果java程序对 key不存在和key存在但是存的值是null这两种情况处理相同一视同仁,则可以直接使用
T t = map.get(key);
if(t==null){
//key不存在,或者存的值是null
}else{
//key存在
}
代替:
if(map.containskey(key)){
//key 存在
}else{
//不存在
}
T t = map.get(key);
if(t==null){
//存的值是null
}
如果java程序需要区分存的值是null和key不存在这两种情况,则需要使用:
if(map.containskey(key)){
//key 存在
}else{
//不存在
}
T t = map.get(key);
if(t==null){
//存的值是null
}
来源:https://blog.csdn.net/qingmengwuhen1/article/details/70060838
标签:HashMap,HashTable,key,value,null
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JVM 运行时数据区与JMM 内存模型
2022-08-12 10:49:27
![](https://img.aspxhome.com/file/2023/8/80168_0s.png)
C#获取进程和对进程的操作
2021-07-14 19:50:35
![](https://img.aspxhome.com/file/2023/4/98194_0s.png)
Java Calendar类使用案例详解
2023-07-09 14:03:22
浅谈xml配置spring profiles的几个注意点
2022-07-20 15:20:09
简单了解JAVA public class与class区别
2023-11-15 23:59:26
![](https://img.aspxhome.com/file/2023/5/59675_0s.png)
C#根据年月日计算星期几的函数
2022-03-17 04:50:50
Java数据结构之线索化二叉树的实现
2022-03-16 15:25:34
![](https://img.aspxhome.com/file/2023/1/75021_0s.png)
Java实现二分搜索树的示例代码
2023-08-05 10:43:40
![](https://img.aspxhome.com/file/2023/5/62145_0s.png)
Java 数组元素倒序的三种方式(小结)
2022-04-01 22:59:19
一篇文章带你入门Java Script
2023-09-12 06:09:24
springboot集成opencv实现人脸识别功能的详细步骤
2023-10-07 00:38:22
![](https://img.aspxhome.com/file/2023/0/74930_0s.png)
Java HtmlParse提取标签中的值操作
2021-10-07 04:43:10
SpringBoot MongoDB与MongoDB GridFS基本使用
2023-07-31 06:26:47
![](https://img.aspxhome.com/file/2023/7/77997_0s.png)
PowerShell 定时执行.Net(C#)程序的方法
2023-07-09 14:10:39
C#实现无损压缩图片的示例详解
2023-04-29 21:07:26
![](https://img.aspxhome.com/file/2023/2/84442_0s.png)
C#实现让窗体永远在窗体最前面显示的实例
2022-09-25 21:40:17
详解java封装实现Excel建表读写操作
2023-12-24 11:17:20
![](https://img.aspxhome.com/file/2023/9/71849_0s.png)
C#中除去所有在HTML元素中标记
2023-04-14 04:09:56
java+opencv实现人脸识别功能
2023-02-20 21:52:58
![](https://img.aspxhome.com/file/2023/3/103073_0s.jpg)
C#对文件名智能排序的算法
2022-05-02 16:18:28