gpt4 book ai didi

java - 检查所有给定的 n 个对象是否相同或不同的最有效方法?

转载 作者:行者123 更新时间:2023-12-03 18:28:13 24 4
gpt4 key购买 nike

假设有两个字符串或任何对象,我想检查两个对象是否相同,我会做 string1.equals(string2)这很好。现在,如果有三个对象,我想看看它们是否都相等,我会做 string1.equals(string2) && string2.equals(string3)并说四个等等,只有在给定参数大小的情况下才有可能。如果我将 n 个对象传递给一个方法,那么检查所有元素是否相等的最有效方法是什么。我写

private static boolean equals(Object... objects) {
Object obj = objects[0];
boolean flag = false;
for (Object object : objects) {
if (object.equals(obj)) {
flag = true;
} else {
flag = false;
break;
}
}

return flag;
}

但是当我向专业程序员展示这一点时,他们指出这是一种非常低效的方法。如果我想检查所有元素是否都是唯一的,那将如何工作?
是否有任何有效且简洁的方法来检查任意 n 个元素的相等性或区别性?

最佳答案

您可以尝试使用 Set界面。如果您还不熟悉 Sets,请引用 Java documentation

A Set is a Collection that cannot contain duplicate elements. It models the mathematical set abstraction. The Set interface contains only methods inherited from Collection and adds the restriction that duplicate elements are prohibited. Set also adds a stronger contract on the behavior of the equals and hashCode operations, allowing Set instances to be compared meaningfully even if their implementation types differ. Two Set instances are equal if they contain the same elements.



由于 Set 不能包含重复的元素,因此 Set 的大小将始终为 1,除非添加了不同的元素,或者换句话说,Set 的大小永远不会等于传递的元素的大小,除非它们都是唯一的.
在你的情况下,它会是

private static boolean equals(Object... obj) {
Set<Object> set = new HashSet<>(Arrays.asList(obj));
return set.size() == 1; // Size of the Set should be one if all elements are same.
}

如果要检查所有元素是否唯一,请检查 Set 的大小并且传递的元素的大小是相同的。

关于java - 检查所有给定的 n 个对象是否相同或不同的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58915115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com