【问题标题】:Choice of data structure for quicker search on values选择数据结构以更快地搜索值
【发布时间】:2015-06-12 13:42:56
【问题描述】:

我有一组价值观。如下所示,如果我选择“A”的值,那么它应该获取相应的别名。 在下面的例子中,'A' 映射到 'UYT' 的对应值,所以 'UYT' 是需要获取的别名。

这里是示例数据:

RUB -->   F,D,E,R,T,Y,Y
WET -->   E,R,G,T,R,E,Q
UYT -->   Y,A,F,G,R,,T,U

此外,搜索应遵循搜索顺序:首先针对别名“UYT”,然后是“WET”,依此类推。

请告知哪种数据结构最适合维护上述数据,以便数据搜索更快。

我正在考虑使用HashMap,其中键是“RUB”、“WET”、“UYT”,映射到它的相应值集将是字符串值列表。但是,我不确定这是否会给我最快的搜索。

所以对于值需要搜索键

【问题讨论】:

  • 您要搜索UYT 并找到A 还是要搜索A 并找到UYT?请定义您的用例。另外,请向我们展示您尝试了什么,并解释为什么您认为 hashmap 不够快。
  • 我需要搜索 A 才能找到 UYT,也就是说需要根据值搜索键
  • 在这个键中你为什么不把A存储为一个键呢?您仍然需要字符串到字符串哈希映射列表,但工作流程稍微容易一些。

标签: java data-structures


【解决方案1】:

HashMap 会足够快,听起来就像您所描述的那样。每次请求检索键的值时,它将为函数中使用的每个键(RUB、WET、UYT)分配一个数值,以从表中检索字符串的索引值。

HashMap 会比 HashTable 快,因为 HashMap 是不同步的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-10-12
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 2011-07-14
  • 2014-03-09
  • 1970-01-01
相关资源
最近更新 更多