2017-11-09 18 views
-2

ゴランに値があるかどうかを調べる効率的な方法を探しています。私が知っている方法はforループ/範囲を使用することです。同じことをするより良い方法はありますか?ゴランの地図に値が存在するか確認してください。

任意の助けをいただければ幸いです:)

+4

質問は混乱しています - あなたは*あなたがマップが*値が含まれているかどうかを知りたいと言うが、あなたはマップが* *キーが含まれているかどうかを確認するJavaの 'containsKey'、と比較します。どちらをお探しですか? – Adrian

+1

キーが存在するかどうかを調べる方法を探している場合、その答えはここにあります:https://stackoverflow.com/questions/2050391/how-to-check-if-a-map-contains-a-key-イン・ゴー –

+0

@Adrian ..混乱のための謝罪。私は質問を編集しました。 –

答えて

3

マップは、特定の値が含まれているかどうかを確認する方法で構築何もありません。この動作が効率的である必要がある場合は、それをサポートするために追加のデータ構造を使用することを検討してください。

この操作は、おそらくMapインタフェースのほとんどの実装のためのマップのサイズに正比例した時間がかかるだろう:JavaのMapcontainsValueを提供するが、documentationが言うことを

注意。

したがって、Javaマップを効率的に実装する必要がある場合は、そのマップも提供する必要があります。

「効率的な実装」とは、マッピングしているデータの種類に基づいて変更することを意味します。たとえば、値が常に一意の場合は、map[value]keyを維持するだけで十分です)。彼らがそうでなければ、もっと原理的なものが必要です。

+0

Gotcha!ありがとう。 –

+0

もしそれらが一意でなければ、 'map [value] [] key'が動作するかもしれませんが、それはもっと保守的な努力です。 – RayfenWindspear

0

地図が大きくてバリューチェックを最適化したい場合は、もう少し地図を追加してください。 map[valueType]intのように。その後:

for k, v := range m { 
    values[v]++ 
} 
関連する問題