gpt4 book ai didi

java - 在 Java 中查找匹配对象

转载 作者:行者123 更新时间:2023-11-30 08:50:31 26 4
gpt4 key购买 nike

我目前正在尝试根据它们的值匹配 2 个对象。除了,它不是 a.a = a.a,而是 a.a = a.ba.b = b.a。这意味着覆盖 equals 是一个选项,但它肯定不是正确的选项。

虽然对这些对象进行排序会使匹配时间更快,但人口会很少,因此没有必要。此外,compareTo 也不完全正确,原因与 equals 相同。

我是否只是简单地制定自己的方法以防万一?将有 4 个字段进行匹配,这就是为什么我没有预先使用 if 语句的原因。

public boolean isOpposite(Object other) {
return (this.a == other.b) ? true : false;
}

还有可能该对象将实现/扩展一个基础对象以承担更多字段并实现自己的匹配方式。

我正在考虑使用 LinkedList 因为我知道它比 ArrayList 使用起来更快,但是我也一直在考虑 Maps。编辑:更好地解释对象

    public class Obj {     
public String a;
public String b;
public String c;
public double d;
}

关系如下:

    Obj obj1, obj2;
obj1.a == obj2.b //.equals for String of course
obj1.b == obj2.a
obj1.c == obj2.c
obj1.d == obj2.d * -1

最佳答案

如您所述,覆盖 equalscompareTo 不是正确的方法。因为假设这两种方法都应该是可传递的,即 A eq B and B eq C => A eq C 但它不适用于“相反”的对象。很高兴知道这一点,因为您无法定义等价类并将其划分为子集,但您需要找到所有对(取决于您的用例)。

不确定,您的目标是什么。如果您有一些包含此类对象的容器并且您需要找到满足条件的所有对,那么恐怕您需要进行 n^2 次比较。

我可能会创建两个散列集,一个包含原件,第二个包含反面,并询问第二个散列集是否包含原始散列集每个成员的反面。

关于java - 在 Java 中查找匹配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948443/

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