草庐IT

java - 使用 Java 比较三个对象是否相等的最紧凑方法?

使用Java比较三个对象的(语义)相等性的最紧凑代码是什么?我有一个业务规则,即对象必须是唯一的,即A与B不同,A与C不同,B与C不同。假设所有对象都属于同一个类,并且已经正确覆盖了equals和hashCode方法。一个小问题是对象C可能是null——如果是这种情况,那么A和B必须彼此不同。我有一些代码,但对我来说有点像手工。 最佳答案 正如OP所说,A和B永远不会为null,C可能为null,使用这个:if(A.equals(B)||B.equals(C)||A.equals(C))//notunique而且,正如其他人已经建议

java - java 中的 equals() 和运算符 "=="

我知道equals()会比较对象的值,'=='运算符会检查变量是否指向同一内存。我不明白equals()如何比较对象的值,例如:classTest{publicTest(intx,floaty){this.x=x;this.y=y;}intx,floaty;}Testtest1=newTest(1,2.0);Testtest2=newTest(1,2.0);所以如果我使用equals(),它会比较每个对象中的每个属性吗?如果我们谈论的是String呢?使用equals()和运算符“==”,我们还需要覆盖equals()吗? 最佳答案

java - 在 Java 的 ArrayList 中使用包含的最佳方法?

我在Java中有一个ArrayList,它由包含两个字符串和一个整数的类型组成。我可以成功测试此ArrayList的一个元素是否等于另一个元素,但我发现contains方法失败。我相信这是因为我的类型不是原始类型。现在我看到了两个替代方案,我想知道哪个是最好的选择:通过遍历ArrayList并测试每个元素与我要查找的元素的相等性然后中断循环来实现我自己的contains方法。或者使用我的类型的HashMap作为键,使用整数作为值而不是ArrayList。在这里,我可以使用方法containsKey来检查某个元素是否已存在于HashMap中。方法#2的唯一警告是在我的案例中该值在很大程度

java:用==或.equals()比较类:有区别吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:DoesJavaguaranteethatObject.getClass()==Object.getClass()?我知道你应该使用equals()一般来说,但有没有办法两个Class对象可以等于equals()但不等于==?编辑:我特别想找出是否存在两个类对象,这样Classcl1=...Classcl2=...cl1.equals(cl2)->truecl1==cl2->false这不似乎包含在可能重复的问题中。(密切相关)也可能不类对象是由someObject.getClass()获得的。--一个可能是

java - java.util.concurrent.Delayed 真的迫使我违反 equals/compareTo 一致性吗?

尝试使用Java的DelayQueue,我必须实现Delayed接口(interface),它需要一个compareTo()"methodthatprovidesanorderingconsistentwithitsgetDelaymethod.".目的当然是DelayQueue可以轻松地对排队的对象进行排序,以便下一个用完延迟的对象可以返回给任何接受者。现在我还需要提前从队列中删除对象。我需要调用delayQueue.remove(queuedObject)。这当然只有在排队的对象有一个equals()方法来反射(reflect)它们的有效负载而不是完全不相关的剩余延迟时间时才有效。

java - hibernate如何使用equals()和hashCode()?

如果您从数据库加载一个实体并以某种方式修改它,hibernate会使用equals/hashCode将实体的当前状态与其快照进行比较以确定是否需要执行sql更新吗?如果它做了这样的比较,我有另一个问题:如果equals将返回true,hibernate会认为实体没有改变或尝试使用它的默认比较(可以肯定)吗? 最佳答案 请参阅EqualsandHashCode来自JBoss社区网站。从那里:Toavoidthisproblemwerecommendusingthe"semi"-uniqueattributesofyourpersist

Java 为两个可互换的整数覆盖 equals() 和 hashcode()

我正在覆盖两个整数的简单容器对象的equals和hashcode方法。每个int都反射(reflect)了另一个对象的索引(该对象是什么并不重要)。类的要点是表示两个对象之间的连接。连接的方向无关紧要,因此equals方法应该返回true,而不管两个int在对象中的方向如何,例如connectionA=newConnection(1,2);connectionB=newConnection(1,3);connectionC=newConnection(2,1);connectionA.equals(connectionB);//returnsfalseconnectionA.equal

java - 尽管同时实现了 hashCode() 和 equals(),但 HashSet 添加了重复条目

我有以下类(class):classPoint{doublex,y;//....constructorandotherfunctionsherepublicbooleanequals(Pointp){if(p==null)return(false);return(x==p.x&&y==p.y);}publicinthashCode(){intresult=17;longc1=Double.doubleToLongBits(x);longc2=Double.doubleToLongBits(y);intci1=(int)(c1^(c1>>>32));intci2=(int)(c2^(c2

java - 在接口(interface)中执行 "equals"

我有一个接口(interface),我希望每个实现这个接口(interface)的人都实现一个重写的“equals”方法。有没有办法确保发生这种情况?我猜这会发生的方式是实现我的接口(interface)的类将自动从Object获取equals,从而使接口(interface)快乐。 最佳答案 不行,你只能创建一个抽象类而不是像这样的接口(interface):publicabstractclassMyApi{publicfinalbooleanequals(Objectother){if(other==this){returntr

Java Class.isAssignableFrom 困惑

我发现原始类型问题System.out.println("Integer.class.isAssignableFrom(int.class)="+Integer.class.isAssignableFrom(int.class));System.out.println("int.class.isAssignableFrom(Integer.class)="+int.class.isAssignableFrom(Integer.class));这两个语句都向调用者返回false。所以拳击似乎不适用于这里。我的问题是我的观察是否正确,或者是否有其他API可以正确地进行此测试?-------