将List <string>转换为HashSet <string> Java的好处

时间:2015-09-16 16:40:25

标签: java performance big-o

所以每次调用服务时,我都需要实例化一次字符串列表。是否值得将List<String>转换为HashSet<String>,然后检查String是否在hashSet中?

例如

HashSet<String> services = new HashSet<String>((List<String>) services);     

我知道检查列表中的字符串是O(n),并且hashSet中字符串的检查是O(1)。我认为转换可能是O(n)。

如果我没有多次在列表中搜索,那么重铸是否会带来性能优势?

2 个答案:

答案 0 :(得分:8)

切换没有任何好处。您的Bio O性能分析是正确的。

答案 1 :(得分:1)

ListSet不是一回事:

  • 订购清单。一套不是。
  • 列表可以多次包含同一个对象。该集不允许重复。

所以你需要问自己的第一个问题是:

  • 我需要在列表中重复吗?
  • 我需要列表中的特殊订单吗?

如果两个问题的答案都是肯定的,那么最好使用HashSet而不是List。这将保证检索元素的性能更好。

如果您无法将List更改为HashSet但需要复制数据结构,则需要更好地检查代码,以查看设置的创建时间是否慢于检索元素所获得的时间