Java 在没有值的情况下向HashMap添加键?
有没有一种方法可以在不添加值的情况下向HashMap添加键?我知道这看起来很奇怪,但我有一个Java 在没有值的情况下向HashMap添加键?,java,collections,guava,Java,Collections,Guava,有没有一种方法可以在不添加值的情况下向HashMap添加键?我知道这看起来很奇怪,但我有一个HashMapamd,我想首先能够根据需要创建键,然后检查某个键是否存在,如果存在,则输入适当的值,即ArrayList 这足够让人困惑吗?您可以输入null值。HashMap 您也可以先使用设置,然后检查键,然后填充地图。因为您使用的是地图,所以您实际上是在寻找一个。为此,我强烈建议使用第三方库,如Google Guava-请参阅 我不确定你是否想这样做。您可以将null存储为一个键的值,但是如果您这样
HashMap
amd,我想首先能够根据需要创建键,然后检查某个键是否存在,如果存在,则输入适当的值,即ArrayList
这足够让人困惑吗?您可以输入
null
值。HashMap
您也可以先使用
设置
,然后检查键,然后填充地图。因为您使用的是地图
,所以您实际上是在寻找一个。为此,我强烈建议使用第三方库,如Google Guava-请参阅
我不确定你是否想这样做。您可以将
null
存储为一个键的值,但是如果您这样做,那么当您执行.get(“key”)
时,您将如何判断该键是否存在,或者它是否确实存在,但具有null
值?不管怎样,请看下面的例子 是的,这已经够让人困惑的了;)我不明白为什么要存储没有值的键,而只是将空数组列表而不是null
添加null
可能会有问题,因为如果您调用
map.get("somekey");
并收到一个null
,则您不知道该密钥是否未找到或是否存在,但映射到null
。//此程序应回答您的问题
//This program should answer your questions
import java.util.*;
public class attemptAddingtoHashMap { //Start of program
//MAIN METHOD #################################################
public static void main(String args[]) { //main begins
Map<String, ArrayList<Object>> hmTrial = new HashMap<String, ArrayList<Object>>();
ArrayList alTrial = new ArrayList();//No values now
if (hmTrial.containsKey("first")) {
hmTrial.put("first", alTrial); }
else {hmTrial.put("first",alTrial);}
//in either case, alTrial, an ArrayList was mapped to the string "first"
//if you choose to, you can also add objects to alTrial later
System.out.println("hmTrial is " + hmTrial); //empty now
alTrial.add("h");
alTrial.add("e");
alTrial.add("l");
alTrial.add("l");
alTrial.add("o");
System.out.println("hmTrial is " + hmTrial);//populated now
} //end of main
//#############################################################################################################
} //end of class
//Note - removing objects from alTrial will remove the from the hashmap
//You can copy, paste and run this code on https://ide.geeksforgeeks.org/
导入java.util.*;
公共类attemptAddingtoHashMap{//程序开始
//主要方法#################################################
公共静态void main(字符串args[]){//main开始
Map hmTrial=newhashmap();
ArrayList alTrial=new ArrayList();//现在没有值
如果(hmTrial.containsKey(“第一”)){
hmTrial.put(“第一”,alTrial);}
否则{hmTrial.put(“first”,alTrial);}
//在任何一种情况下,alTrial都会将ArrayList映射到字符串“first”
//如果选择,也可以稍后将对象添加到alTrial
System.out.println(“hmTrial是”+hmTrial);//现在为空
另加(“h”);
备选。添加(“e”);
备选。添加(“l”);
备选。添加(“l”);
备选。添加(“o”);
System.out.println(“hmTrial是”+hmTrial);//现在填充
}//主管道末端
//#############################################################################################################
}//下课
//注意-从alTrial中删除对象将从hashmap中删除
//您可以在上复制、粘贴和运行此代码https://ide.geeksforgeeks.org/
…或者只使用番石榴的多重地图!嗨,波佐-我发现这个问题是因为我正在尝试做类似的事情,你的回答真的很有帮助。您能否详细说明在向集合添加对象时如何初始化集合,然后将其转换为HashMap?如果添加null
,您可以使用containsKey()进行测试。@sarumont-当然,但您必须知道,只有此方法适用于映射。如果映射返回map.get(“key”)==null
和map.contains(“key”)==true
,我会感到惊讶。至少它可以与java.util.HashMap一起工作map.put(“foo”,null)
为map.containsKey(“foo”)
生成true,为map.get(“foo”)
@sarumont-当然:这种行为确实会让我吃惊(在真实代码中);)哦,我现在明白你的意思了我也会感到惊讶,但不会太惊讶——不幸的是,我看到了更糟的情况
map.get("somekey");
//This program should answer your questions
import java.util.*;
public class attemptAddingtoHashMap { //Start of program
//MAIN METHOD #################################################
public static void main(String args[]) { //main begins
Map<String, ArrayList<Object>> hmTrial = new HashMap<String, ArrayList<Object>>();
ArrayList alTrial = new ArrayList();//No values now
if (hmTrial.containsKey("first")) {
hmTrial.put("first", alTrial); }
else {hmTrial.put("first",alTrial);}
//in either case, alTrial, an ArrayList was mapped to the string "first"
//if you choose to, you can also add objects to alTrial later
System.out.println("hmTrial is " + hmTrial); //empty now
alTrial.add("h");
alTrial.add("e");
alTrial.add("l");
alTrial.add("l");
alTrial.add("o");
System.out.println("hmTrial is " + hmTrial);//populated now
} //end of main
//#############################################################################################################
} //end of class
//Note - removing objects from alTrial will remove the from the hashmap
//You can copy, paste and run this code on https://ide.geeksforgeeks.org/