在没有值的情况下向HashMap添加密钥?
2022-09-03 09:26:07
有没有办法在不添加值的情况下向HashMap添加键?我知道这似乎很奇怪,但是我有一个amd,我希望首先能够根据需要创建密钥,然后检查某个密钥是否存在,如果是这样,请输入适当的值,即HashMap<String, ArrayList<Object>>
ArrayList<Object>
这是否足够令人困惑?
有没有办法在不添加值的情况下向HashMap添加键?我知道这似乎很奇怪,但是我有一个amd,我希望首先能够根据需要创建密钥,然后检查某个密钥是否存在,如果是这样,请输入适当的值,即HashMap<String, ArrayList<Object>>
ArrayList<Object>
这是否足够令人困惑?
由于您使用的是 ,因此您确实在寻找多映射。我强烈建议使用第三方库,例如Google Guava - 请参阅Guava的Multimaps
。Map<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", "สวัสดี"]