HashMap在多个键中搜索特定值

我正在检查我的HashMap中是否存在密钥,如果存在,我还要检查是否有任何其他密钥的值与我检查过的原始密钥的名称相同。

例如我有这个。

System.out.println("What course do you want to search?"); String searchcourse = input.nextLine(); boolean coursefound = false; if(hashmap.containsKey(searchcourse) == true){ coursefound = true; } 

这将检查我的hashmap中是否存在该键,但现在我需要检查特定值的每个键的值,在本例中为字符串搜索字符串。

通常我会使用一个基本的for循环来迭代这样的东西,但它不适用于HashMaps。 我的值也存储在String ArrayList中,如果有帮助的话。

您将需要查看HashMap中的每个条目。 此循环应检查您的搜索searchcourse的ArrayList的内容,并打印出包含该值的键。

 for (Map.Entry entries : hashmap.entrySet()) { if (entries.getValue().contains(searchcourse)) { System.out.println(entries.getKey() + " contains " + searchcourse); } } 

以下是相关的javadoc:

Map.Entry的

HashMap entrySet方法

ArrayList contains方法

您可以拥有双向地图。 例如,您可以使用Map>或MultiMap作为键的值,或者您可以使用计划添加到Guava的双向映射。

据我了解你的问题,Map中的值是List 。 也就是说,您的Map声明为Map> 。 如果是这样:

 for (List listOfStrings : myMap.values()) [ if (listOfStrings .contains(searchcourse) { // do something } } 

如果值只是字符串,即Map是Map ,则@Matt具有简单的答案。