Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—通过哈希比较两个集合的最佳方法(via==)_Java_Set - Fatal编程技术网

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的复制品速度更快,但它会给你一个毫无意义的答案,那有什么意义呢?什么都不做会更快,但这并没有帮助。可能是重复的