HashMap在多个键中搜索特定值

时间:2013-12-04 17:29:38

标签: java 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中,如果有帮助的话。

3 个答案:

答案 0 :(得分:1)

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

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

以下是相关的javadoc:

Map.Entry

HashMap entrySet method

ArrayList contains method

答案 1 :(得分:0)

您可以拥有双向地图。例如。您可以为键的值设置Map<Value, Set<Key>>MultiMap,也可以使用计划添加到Guava的双向地图。

答案 2 :(得分:0)

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

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

如果值只是字符串,即地图是Map<String, String>,那么@Matt就有了简单的答案。