-2

データ構造を使って情報を保存したい。

たとえば、次のようなデータがあります。

Code    Applicable values
001     A,B,C,D
004     C,D
005     P,Q,R,S
007     S,C
..
..
..
1000 (Code, Applicable values pair)

私が考えることができる簡単な解決策はHashMap、 key typeStringと value typeを使用することHashSetです。

私は以前、建築家から、中に入るのは得策Setではないと知らされていました。Map

これを実装する方法について何か提案はありますか?

4

1 に答える 1

1

AHashMap<String, HashSet<String>>は、あなたが示したタイプのデータを保持するために私にはうまく見えます。

そのデータ構造がプログラムの残りの部分にどのように公開されるかについて話しているとき、あなたの「アーキテクト」は複雑すぎるという点で正しいかもしれません。例えば:

  • 上記の型シグネチャは、キーとして使用される文字列の種類、および値セットに含まれる値の種類については何も述べていません。彼らは名前を表していますか?それともISBN番号?または任意のテキスト、または特定の列挙値のみですか? 等

  • コードのあらゆる場所でこのような を使用する場合HashMap、セットに値を追加するときに、あらゆる場所で次の 2 つの手順を実行する必要があります。(1) 特定のキーの辞書に値がない場合にのみ空のセットを作成する。 ) 指定されたキーのセットに新しい値を追加します。そのような日常的なことを考えなければならないことは、バグの扉を開きます。

おそらく、次のような、シンプルで使いやすい「コレクション」インターフェイスの背後に実際のデータ構造を隠す方がよいでしょう。

interface ApplicableValuesCollection
{
    void Add(int code, String value);
    void Remove(int code, String value);
    bool Contains(int code, String value);
    Iterable<String> GetValuesOfCode(int code);
    …
}
于 2012-05-08T10:38:33.363 に答える