哪个更好的搜索字符串或数组

时间:2012-07-07 14:26:37

标签: java

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

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

2 个答案:

答案 0 :(得分:6)

肯定会使用某种形式的集合。如果你只关心遏制,你应该使用某种Set<String>(例如HashSet<String>LinkedHashSet<String>,除非你有大量的哈希值,否则它们都会给出O(1)复杂度碰撞)但为了善意,使用连接字符串。

您的数据自然不是串联字符串 - 它是字符串的集合。始终将数据保持在最自然的表示形式,除非您确实证明某些替代形式(例如单个字符串)将为您带来有意义的好处。保持数据的自然表示几乎总能带来更清晰的代码,当您找到真正的瓶颈时,这些代码更容易使用 - 以后更容易优化

答案 1 :(得分:4)

创建HashSet使用contains方法。 String或ArrayList将具有O(n)复杂度,而HashSet将具有O(1)复杂度。