我想使用数据结构存储信息。
例如,我的数据类似于:
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
。
建筑师之前告知我Set
中Map
不是一个好主意。
有关如何实施此建议的任何建议?
答案 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);
…
}