我正在检查我的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中,如果有帮助的话。
答案 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:
答案 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就有了简单的答案。