我需要存储某些ID,并检查是否存在某个ID
要么我可以使用连接字符串或数组/列表,其中哪一个是更好,更快的方式。
这就是实际数据的组织方式:
答案 0 :(得分:6)
我肯定会使用某种形式的集合。如果你只关心遏制,你应该使用某种Set<String>
(例如HashSet<String>
或LinkedHashSet<String>
,除非你有大量的哈希值,否则它们都会给出O(1)复杂度碰撞)但为了善意,不使用连接字符串。
您的数据自然不是串联字符串 - 它是字符串的集合。始终将数据保持在最自然的表示形式,除非您确实证明某些替代形式(例如单个字符串)将为您带来有意义的好处。保持数据的自然表示几乎总能带来更清晰的代码,当您找到真正的瓶颈时,这些代码更容易使用 - 以后更容易优化
。答案 1 :(得分:4)
创建HashSet使用contains
方法。 String或ArrayList将具有O(n)
复杂度,而HashSet
将具有O(1)
复杂度。