Data structures 什么样的数据结构最适合存储键值对,其中值是某个键的字符串和列表<;字符串>;要一些钥匙吗?

Data structures 什么样的数据结构最适合存储键值对,其中值是某个键的字符串和列表<;字符串>;要一些钥匙吗?,data-structures,language-agnostic,Data Structures,Language Agnostic,例如,键1将具有值“A”、“B”、“C”,但键2将具有值“D”。如果我使用 Map<String, List<String>> Map 我需要填充列表,即使我只有一个字符串值。 在这种情况下应该使用什么数据结构?Map将是标准的方法(当只有一个项目时,使用大小为1的列表) 您也可以使用类似于Map(这应该在Java或C#中工作,举两个例子),其中的值是List或String,但这将是一种相当糟糕的做法,因为存在可读性问题(从查看类型的角度看,您根本不知道对象代表什么)

例如,键1将具有值“A”、“B”、“C”,但键2将具有值“D”。如果我使用

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

Map
将是标准的方法(当只有一个项目时,使用大小为1的列表)

您也可以使用类似于
Map
(这应该在Java或C#中工作,举两个例子),其中的值是
List
String
,但这将是一种相当糟糕的做法,因为存在可读性问题(从查看类型的角度看,您根本不知道
对象
代表什么),强制转换在运行时进行,这并不理想


但是,这取决于您计划运行的查询类型<如果您计划在
列表中执行存在性检查,那么code>Map
可能是一个好主意,而且它可能很大<如果有很多键只有一个映射值,则代码>设置(其中
StringPair
是一个包含2个
String
成员的类)是另一个考虑因素。在各种情况下,有很多解决方案更合适——基本上可以归结为查看您想要执行的查询类型,并据此选择适当的结构。

这对我来说似乎是合理的。我认为这是一个非常常见的哈希表实现——在每个bucket中使用一个链表来处理冲突。