所以每次调用服务时,我都需要实例化一次字符串列表。是否值得将List<String>
转换为HashSet<String>
,然后检查String是否在hashSet中?
例如
HashSet<String> services = new HashSet<String>((List<String>) services);
我知道检查列表中的字符串是O(n),并且hashSet中字符串的检查是O(1)。我认为转换可能是O(n)。
如果我没有多次在列表中搜索,那么重铸是否会带来性能优势?
答案 0 :(得分:8)
切换没有任何好处。您的Bio O性能分析是正确的。
答案 1 :(得分:1)
List
和Set
不是一回事:
所以你需要问自己的第一个问题是:
如果两个问题的答案都是肯定的,那么最好使用HashSet而不是List。这将保证检索元素的性能更好。
如果您无法将List更改为HashSet但需要复制数据结构,则需要更好地检查代码,以查看设置的创建时间是否慢于检索元素所获得的时间