1

キーを文字列に関連付ける HashMap があり、いくつかの文字列を互いに比較する必要があります。ただし、一部の文字列は HashMap にある場合とない場合があります。

例: 可能であれば相互に比較する予定の 4 つの文字列があるとしますが、HashMap にはそのうちの 3 つしかありません。存在する文字列を、存在しない文字列と比較しようとせずに、またネストされた if と else の束を実行せずに比較するにはどうすればよいですか?

編集: Alohci のソリューションは簡単かつ高速で、うまくいきました。

4

2 に答える 2

2

最初のエントリである HashMap Store の .values コレクションをループします。残りの各エントリを格納されているエントリと比較します。一致しないものを見つけたら、すぐにエラーをスローします。ループの最後に到達すると、すべての文字列が一致します。

于 2008-12-20T02:04:26.950 に答える
0

すべての値をキーのセットにマップする逆マッピングが必要なようです。

Map<Key,Value> forwardMap;
Map<Value, Set<Key> reverseMap;

次に、見ているすべてのエントリがセットに含まれているかどうかを確認できます。順方向マッピングを追加/削除するときは、必ず逆方向マッピングを入れてください。

このアプローチの利点は、テストが O(n) になることです。ここで、n はテストするキーのサイズであり、m がフォワード マップのサイズである O(m) ではありません。

于 2008-12-20T03:38:06.230 に答える