Java—通过哈希比较两个集合的最佳方法(via==)
我有两套弦。字符串是相同的(Java—通过哈希比较两个集合的最佳方法(via==),java,set,Java,Set,我有两套弦。字符串是相同的(=返回true)。我相信通过==进行比较应该比通过equals()或hashCode()进行比较快。那么,如何确保它们在不使用equals()时是相同的呢?谢谢因为两个集合不是同一个实例,所以不能使用=来比较集合s 现在,如果使用Set的equals,它(我所说的“it”是指AbstractSet的默认实现)将验证两个Set的大小相同,然后迭代一个集合的元素,并检查另一个集合是否包含它们中的每一个 例如,如果您正在使用HashSets,为了查找String是否包含在某
=
返回true
)。我相信通过==
进行比较应该比通过equals()
或hashCode()
进行比较快。那么,如何确保它们在不使用equals()
时是相同的呢?谢谢因为两个集合
不是同一个实例,所以不能使用=
来比较集合
s
现在,如果使用Set
的equals
,它(我所说的“it”是指AbstractSet
的默认实现)将验证两个Set
的大小相同,然后迭代一个集合的元素,并检查另一个集合是否包含它们中的每一个
例如,如果您正在使用HashSet
s,为了查找String
是否包含在某些HashSet
中,必须使用hashCode()
来查找可能包含搜索的字符串的bucket,但稍后String
的等于()
将被调用以验证是否存在与搜索的字符串相同的字符串String
的equals()
实际上以开头
if (this == anObject) {
return true;
}
因此,两个集合
可能包含对相同字符串
实例的引用这一事实将有助于改进集合
比较的运行时间。由于两个集合
不是相同的实例,因此不能使用=
来比较集合
现在,如果使用Set
的equals
,它(我所说的“it”是指AbstractSet
的默认实现)将验证两个Set
的大小相同,然后迭代一个集合的元素,并检查另一个集合是否包含它们中的每一个
例如,如果您正在使用HashSet
s,为了查找String
是否包含在某些HashSet
中,必须使用hashCode()
来查找可能包含搜索的字符串的bucket,但稍后String
的等于()
将被调用以验证是否存在与搜索的字符串相同的字符串String
的equals()
实际上以开头
if (this == anObject) {
return true;
}
因此,您的两个集合
可能包含对同一字符串
实例的引用这一事实将有助于改进集合
比较的运行时间。为什么不想使用equals
?也许通过身份比较有点快,但是额外的速度是否真正有意义?我以前是C++用户。通过比较,我发现使用==类似于对JVM对象的地址进行匹配,应该比通过标识进行匹配更快。不是吗?可能是@Ivan的复制品速度更快,但它会给你一个毫无意义的答案,那有什么意义呢?什么都不做会更快,但这并没有什么帮助。可能会重复为什么您不想使用equals
?也许通过身份比较有点快,但是额外的速度是否真正有意义?我以前是C++用户。通过比较,我发现使用==类似于对JVM对象的地址进行匹配,应该比通过标识进行匹配更快。不是吗?可能是@Ivan的复制品速度更快,但它会给你一个毫无意义的答案,那有什么意义呢?什么都不做会更快,但这并没有帮助。可能是重复的