字符串搜索的集合类型

时间:2016-09-09 12:34:10

标签: java list collections

我有一个字符串,我需要在字符串集合中搜索。我需要搜索所需字符串的多个表示(原始表示,修剪,UTF-8编码,非ASCII字符编码)。集合大小将达到数千个。

我试图找出用于收藏的最佳代表,以获得最佳效果:

  1. ArrayList - 迭代数组并检查是否有任何元素与任何字符串表示相匹配
  2. HashMap - 检查地图是否包含我的任何字符串表示
  3. 还有其他吗?

1 个答案:

答案 0 :(得分:0)

一般来说,HashMap(或任何其他基于哈希表的数据结构)更适用于" lookup"行使。原因很简单,那些数据结构支持在恒定时间内查找(与集合大小无关)。 但是......在您的场景中(单个查询收集),您可能无法通过使用HashMap而不是ArrayList获得任何性能提升。原因:

  1. 将数据放入HashMap需要一些时间。不是很重要的时间,但与初始列表的一次完整通过相当。
  2. 你的收藏很小 - 迭代超过5000个元素只需几毫秒(或更快?)。因为你需要"搜索"只有一次,你不会节省太多时间。