检查列表是否最快的方法 包含唯一的字符串


问题内容

基本上,我大约有1,000,000个字符串,对于每个请求,我都必须检查一个String是否属于列表。

我担心性能,最好的方法是什么?ArrayList?哈希?


问题答案:

最好的选择是使用HashSet并通过contains()方法检查集合中是否存在字符串。建立HashSet可以通过使用Object方法hashCode()和进行快速访问equals()HashSet状态的Javadoc

此类为基本操作(添加,删除,包含和调整大小)提供了恒定的时间性能,

HashSet
将对象存储在哈希存储桶中,也就是说,该hashCode方法返回的值将确定对象存储在哪个存储桶中。通过这种方式,HashSet通过该equals()方法必须执行的相等检查数量减少为仅其他对象相同的哈希桶。

为了有效地使用HashSets和HashMaps,必须符合javadoc中概述的equalshashCode合同。在这些方法的情况下已经实现了这一目的。java.lang.String