-2

我需要存储某些 id,并检查那里是否存在。
我可以使用连接字符串或数组/列表,它们中的哪一个是更好更快的方法。这就是数据的实际组织方式:

  • 第一年
    • 第 1 个月
      • 第 1 天
      • 第 2 天
      • 第 3 天
    • 第 2 个月
      • 第 6 天
      • 第 2 天
      • 第 3 天
  • 第 2 年
    • 第 3 个月
      • 第 1 天
      • 第 3 天
      • 第 7 天
    • 第 6 个月
      • 第 6 天
      • 第 2 天
      • 第 3 天
4

2 回答 2

6

肯定会使用某种形式的集合。如果您只关心包含,您应该使用Set<String>某种类型的 a(例如HashSet<String>or LinkedHashSet<String>,除非您有大量的哈希冲突,否则两者都会产生 O(1) 复杂性),但为了上帝的缘故,不要使用连接字符串。

您的数据自然不是串联的字符串 - 它是字符串的集合。始终以最自然的表示形式保存您的数据,除非您确实有充分的证据表明某些替代形式(例如单个字符串)会给您带来有意义的好处。将数据保持在自然表示中几乎总是会导致代码更清晰,更易于使用 - 并且在您发现真正的瓶颈所在之后更容易优化。

于 2012-07-07T14:28:53.967 回答
4

创建一个HashSet一个使用contains方法。String 或 ArrayList 将具有O(n)复杂性,而复杂性HashSet也将如此O(1)

于 2012-07-07T14:28:19.573 回答