草庐IT

Wfloat-equal

全部标签

java - 在比较器接口(interface)中使用 equals() 方法?

equals()方法可用于Object类中的所有java集合类。Comparator接口(interface)中也声明了这个方法,那么在Comparator中声明这个方法的目的是什么?在什么情况下使用它以及如何使用它? 最佳答案 whatisthepurposeofdeclaringthismethodinComparator?我认为这是设计者强调Comparator.equals()强加一些additionalrequirements事实的方式。在任何实现该接口(interface)的类上:Additionally,thismet

java - 使用 compareTo 实现 equals 方法

一般问题:在Java中实现默认equals方法的重写时,对于简单地使用已经实现的compareTo方法与将独立逻辑写入其中,我应该注意什么?等于方法?我注意到有人在另一个问题中提到foo.equals((String)null)返回false而String.compareTo((String)null)抛出NullPointerException。是什么让这些不一致的结果成为理想的功能?示例equals方法:@Overridepublicbooleanequals(Objectobj){if(obj!=null&&objinstanceofMyClass){MyClassmsg=(My

java为什么equals方法的入参应该是Object

我正在阅读一本关于数据结构的书。目前我在图上,下面的代码是图的顶点部分。classVertex{//bunchofmethodspublicbooleanequals(Objecto){//somecode}}当我尝试实现这个equals方法时,我的编译器提示没有检查参数的类型,只允许向它发送任何对象。对我来说,为什么该参数不应该是Vertex而不是Object也确实有点奇怪。作者这样做是有原因的还是这是一些错误或过时的例子? 最佳答案 @Overridepublicbooleanequals(Objectobj){if(!(obj

java - Guava 与 Apache Commons Hash/Equals 构建器的对比

我想知道Guava与ApacheCommons在equals和hashCode构建器方面的主要区别是什么。等于:Apache公地:publicbooleanequals(Objectobj){if(obj==null){returnfalse;}if(obj==this){returntrue;}if(obj.getClass()!=getClass()){returnfalse;}MyClassother=(MyClass)obj;returnnewEqualsBuilder().appendSuper(super.equals(obj)).append(field1,other.f

java - 我们应该总是重写 equals 吗?

自己写类的时候,是否总是需要重写equals(Objecto)?如果我不这样做,它会自动检查所有字段是否相同吗?或者它只是检查两个变量是否指向同一个对象? 最佳答案 如果一个人正在编写一个要以某种方式比较其对象的类,那么应该覆盖equals和hashCode方法。不提供显式的equals方法将导致从父类(superclass)继承equals方法的行为,并且在父类(superclass)是Object的情况下类,则它将是Object的JavaAPI规范中规定的行为。类。可以在Object的文档中找到提供equals方法的一般契约。类

java - equal() 和 equalsIgnoreCase() 对相等的字符串返回 false

我在mac上使用eclipseIDE(版本:3.4.2)时遇到了以下问题。当使用equal()或equalsIgnoreCase()方法比较字符串时,即使字符串相等,我也会收到false。例如,下面的代码将以下条件视为假,即使values[0]="debug_mode"if(values[0].equalsIgnoreCase("debug_mode"))debug_mode=true;这是以下循环的一部分:Stringvalue=dis.readLine();Stringvalues[]=value.trim().split("=");if(values.length>=2){Con

java - 什么时候需要覆盖 equals 和 hashcode 方法?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:OverridingequalsandhashCodeinJava如果我有classA{intx=1;}...Aa1=newA();Aa2=newA();a1.equals(a2);如果我比较A的2个实例而不覆盖equals方法,我会得到预期的结果吗?

java - 无法理解在 ConcurrentHashMap 中重写 equals 方法的优势

Java中的大多数map类都会覆盖AbstractMap并使用其实现的equals方法来检查:传递的对象是Map类型长度相同包含this中的所有条目if(o==this)returntrue;//checkthatpassedobjectisoftypeMapif(!(oinstanceofMap))returnfalse;Mapm=(Map)o;//checkthatpassedobjecthassamelengthif(m.size()!=size())returnfalse;//passedobjectcontainsalltheentriestry{Iterator>i=ent

java - 为什么 ArrayList 不覆盖 equals() 以获得更好的性能?

ArrayList从其父类AbstractList继承了equals实现,效果不是很好。它可以首先检查两个ArrayList的大小,然后如果这些大小不同则立即返回false。为什么ArrayList不这样做? 最佳答案 如thisanswer中所述,这没有完成,因为某些实现的size方法复杂度为O(n),因此这确实是一个退化。我同意让equals在所有列表实现中保持一致会影响具有O(1)大小复杂度的集合,但也许Java开发人员认为它更容易插入在需要时删除它比在不需要时删除它(您必须重新实现整个方法!)。例如,您可以轻松地添加此优化,

Java .equals() instanceof 子类?为什么不调用父类(super class) equals 而不是将其设为最终类?

它在Object的.equals(Object)javadoc中说明:Itissymmetric:foranynon-nullreferencevaluesxandy,x.equals(y)shouldreturntrueifandonlyify.equals(x)returnstrue.在示例代码中几乎所有地方我都看到重写的.equals(Object)方法,它使用instanceof作为第一个测试之一,例如这里:Whatissues/pitfallsmustbeconsideredwhenoverridingequalsandhashCode?publicclassPerson{p