私はマップ>である "stateCityMap"というHashMapを持っています。 KeysはStates、すなわちGoa、Keralaなどであり、値は都市、すなわちPanjim、Margaoなどです。特定の都市がHashMap(例:Margao)に存在するかどうかを確認し、その値の対応するキーを結果として返します..しかし、毎回私は以下のコードを実行しました。他の部分を実行します(都市がHashMApに存在しないとき)。 市: - 私はこの関数に渡す都市の名前があるHashMapの指定された値からキーを取得
コード:
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のようなものです。それは少しエキゾチックです。 –
* O(N)*テクニックではなく* O(1)*時間に逆関数を提供するには、マップを先頭に戻すか、2つのマップを使用する必要があります。 – EJP
O(N)より悪いです。 O(市町村)+ O(市町村)。 –