在没有值的情况下向HashMap添加密钥?

2022-09-03 09:26:07

有没有办法在不添加值的情况下向HashMap添加键?我知道这似乎很奇怪,但是我有一个amd,我希望首先能够根据需要创建密钥,然后检查某个密钥是否存在,如果是这样,请输入适当的值,即HashMap<String, ArrayList<Object>>ArrayList<Object>

这是否足够令人困惑?


答案 1

由于您使用的是 ,因此您确实在寻找多映射。我强烈建议使用第三方库,例如Google Guava - 请参阅Guava的MultimapsMap<String, List<Object>>

Multimap<String, Object> myMultimap = ArrayListMultimap.create();

// fill it
myMultimap.put("hello", "hola");
myMultimap.put("hello", "buongiorno");
myMultimap.put("hello", "สวัสดี");

// retrieve
List<String> greetings = myMultimap.get("hello");
                      // ["hola", "buongiorno", "สวัสดี"]

Java 8更新:我不再相信每个都应该重写为多映射。如今,在没有番石榴的情况下很容易获得所需的东西,这要归功于Map#computeIfAbsent()Map<K, SomeCollection<V>>

Map<String, List<Object>> myMap = new HashMap<>();

// fill it
myMap.computeIfAbsent("hello", ignored -> new ArrayList<>())
  .addAll(Arrays.asList("hola", "buongiorno", "สวัสดี");

// retrieve
List<String> greetings = myMap.get("hello");
                      // ["hola", "buongiorno", "สวัสดี"]

答案 2

我不确定你是否想这样做。您可以存储为键的值,但是如果您这样做,如何能够判断何时执行键是否存在或它确实存在但具有值?无论如何,请参阅文档null.get("key")null