使用什么数据结构?

时间:2012-05-07 21:15:53

标签: java data-structures

我想使用数据结构存储信息。

例如,我的数据类似于:

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的密钥类型为String,值类型为HashSet

建筑师之前告知我SetMap不是一个好主意。

有关如何实施此建议的任何建议?

1 个答案:

答案 0 :(得分:1)

HashMap<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);
    …
}