-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在代码中的任何地方都使用了这样的一个,那么在向集合中添加值时,您必须记住到处执行两个步骤:(1)仅当字典中没有某个给定键的值时才创建一个空集合,以及(2 ) 将新值添加到给定键的集合中。不得不考虑这样的常规事情为错误打开了大门。

也许将您的实际数据结构隐藏在一个漂亮、简单且易于使用的“收集”界面后面会更好,可能类似于以下内容:

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 回答