在没有值的情况下向HashMap添加密钥?
有没有办法在不添加值的情况下向HashMap添加密钥? 我知道它看起来很奇怪,但我有一个HashMap<String, ArrayList>
amd我想首先能够根据需要创建密钥,然后检查某个密钥是否存在,如果是,则输入适当的值,即ArrayList
那令人困惑吗?
由于您正在使用Map
,因此您真的在寻找一个多图 。 我强烈建议您使用Google Guava等第三方库 – 请参阅Guava的Multimaps
。
Multimap myMultimap = ArrayListMultimap.create(); // fill it myMultimap.put("hello", "hola"); myMultimap.put("hello", "buongiorno"); myMultimap.put("hello", "สวัสดี"); // retrieve List greetings = myMultimap.get("hello"); // ["hola", "buongiorno", "สวัสดี"]
Java 8更新:我不再相信每个Map
都应该重写为多图。 现在,由于Map#computeIfAbsent()
,很容易在没有Guava的情况下获得所需的东西。
Map> myMap = new HashMap<>(); // fill it myMap.computeIfAbsent("hello", ignored -> new ArrayList<>()) .addAll(Arrays.asList("hola", "buongiorno", "สวัสดี"); // retrieve List greetings = myMap.get("hello"); // ["hola", "buongiorno", "สวัสดี"]
我不确定你想要这样做。 您可以将null
存储为键的值,但是如果您这样做,您将如何判断,当您执行.get("key")
,该键是否存在,或者它是否存在但具有null
值? 无论如何,请参阅文档 。
您可以输入null
值。 HashMap
允许它
您最初也可以使用Set
,并检查它是否为键,然后填充地图。
是的,它足够令人困惑;)我不明白为什么你想要存储没有值的键而不是只是把空的arraylists而不是null
。
添加null
可能是个问题,因为如果你打电话
map.get("somekey");
并且收到一个null
,然后你不知道,如果找不到密钥或者它是否存在但是映射为null
…