【发布时间】:2016-07-09 04:00:31
【问题描述】:
我有一个 HashMap “stateCityMap”,它是一个 Map>。键是州,即果阿、喀拉拉邦等,值是城市,即 Panjim、Margao 等。我想检查 HashMap 中是否存在特定城市,例如 Margao,并给出该值的相应键作为结果..但是每次我运行下面的代码时,它都会执行else部分(当HashMAp中不存在城市时)。 city :- 是我传递给这个函数的城市名称
代码:
public String getState(Map<String, List<String>> stateCityMap, String city) throws CityNotFoundException {
HashMap<String, List<String>> g = new HashMap<String, List<String>>(stateCityMap);
if(g.containsValue(city)){
System.out.println("State:- " +g.get(city));
}
else {
throw new CityNotFoundException("City Not Found");
}
return null;
}
为什么要这样做?为什么我得到错误的结果?
【问题讨论】:
-
您想要的数据结构类似于 BiMultiMap 或 MultiBiMap。有点异国情调。
-
你的 Map 是从后到前的,或者你应该使用两个 Map,一个在 O(1) 时间内提供反函数,而不是这个 O(N ) 技术。
-
比 O(N) 差; O(城市)+ O(州)。
-
@DavidEhrmann - 我不允许更改数据结构...有什么办法可以达到预期的效果吗?
-
@EJP --- 我必须使用此地图来执行我希望执行的任何操作。有什么办法可以达到预期的效果?
标签: java collections hashmap