例如,键1将具有值" A"," B"," C"但是关键2将具有价值" D"。如果我使用
Map<String, List<String>>
即使我只有一个String值,我也需要填充List<String>
。
在这种情况下应该使用什么数据结构?
答案 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个映射值。有很多解决方案在各种情况下都更合适 - 它主要归结为查看您想要执行的查询类型并根据它选择适当的结构。