Java 在没有值的情况下向HashMap添加键?

Java 在没有值的情况下向HashMap添加键?,java,collections,guava,Java,Collections,Guava,有没有一种方法可以在不添加值的情况下向HashMap添加键?我知道这看起来很奇怪,但我有一个HashMapamd,我想首先能够根据需要创建键,然后检查某个键是否存在,如果存在,则输入适当的值,即ArrayList 这足够让人困惑吗?您可以输入null值。HashMap 您也可以先使用设置,然后检查键,然后填充地图。因为您使用的是地图,所以您实际上是在寻找一个。为此,我强烈建议使用第三方库,如Google Guava-请参阅 我不确定你是否想这样做。您可以将null存储为一个键的值,但是如果您这样

有没有一种方法可以在不添加值的情况下向HashMap添加键?我知道这看起来很奇怪,但我有一个
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/