什么样的数据结构最适合存储键值对,其中值将是某个键的String和某些键的List <string>?</string>

时间:2014-05-30 15:00:20

标签: data-structures language-agnostic

例如,键1将具有值&#34; A&#34;,&#34; B&#34;,&#34; C&#34;但是关键2将具有价值&#34; D&#34;。如果我使用

Map<String, List<String>>

即使我只有一个String值,我也需要填充List<String>。 在这种情况下应该使用什么数据结构?

1 个答案:

答案 0 :(得分:1)

Map<String,List<String>>将是标准的方法(当只有一个项目时使用size-1列表)。

您也可以使用Map<String, Object>(可以使用Java或大概使用C#,名称为2),其中值为List<String>String,但这样会是一个相当糟糕的做法,因为存在可读性问题(你不知道Object代表什么样的Map<String,Set<String>>代表什么),在运行期间进行投射,这是不理想的,等等。

但它确实依赖于您计划运行的查询类型。如果您计划在List中进行存在检查,那么Set<StringPair>可能是一个好主意,而且可能很大。 StringPair(其中String是一个有2 {{1}}个成员的类)是另外一个考虑因素,如果有大量的键只有1个映射值。有很多解决方案在各种情况下都更合适 - 它主要归结为查看您想要执行的查询类型并根据它选择适当的结构。