草庐IT

Wfloat-equal

全部标签

java - Google App Engine、JDO 和 equals/hashCode

我在GoogleAppEngine中有一个运行良好的应用程序。我意识到我忘记实现equals和hashCode的一个JDO增强对象(我需要在一个集合中使用该对象)。所以我做了。在这些实现中我并没有做任何特别的事情,事实上我只是使用Eclipse来生成它们。像这样:@PrimaryKey@Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)privateLongid;@PersistentprivateStringappleId;@OverridepublicinthashCode(){finalintprime=31;intres

java - ArrayList 不使用重写的 equals

我在让ArrayList正确使用覆盖的equals时遇到问题。问题是我试图使用equals只测试单个键字段,并使用ArrayList.contains()来测试是否存在具有正确字段的对象。这是一个例子publicclassTestClass{privatestaticclassInnerClass{privatefinalStringtestKey;//dataandsuchInnerClass(StringtestKey,intdataStuff){this.testKey=testKey;//etc}@Overridepublicbooleanequals(Objectin){Sy

java - 我是否使用 Google Guava 正确实现了 equals 和 hashCode?

我正在使用hibernate,需要覆盖equals和hashCode()。我选择使用google-guava的equals和hashCode助手。我想知道我是否遗漏了什么。我有idImage和filePath的获取/设置方法。@Entity@Table(name="IMAGE")publicclassImageEntity{privateIntegeridImage;privateStringfilePath;@OverridepublicinthashCode(){returnObjects.hashCode(getFilePath());}@Overridepublicboolea

java - Java 中 equals() 方法的行为

这个问题在这里已经有了答案:WeirdIntegerboxinginJava(12个答案)Whatisthedifferencebetween==andequals()inJava?(26个答案)关闭9年前。考虑以下Java代码:Objecta=newInteger(2);Objectb=newInteger(2);System.out.println(a.equals(b));Objectx=newObject();Objecty=newObject();System.out.println(x.equals(y));第一个print语句打印true,第二个false。如果这是故意行

java - hashCode() 方法当 equals() 基于多个独立字段时

我有一个类,它的相等性基于2个字段,这样如果任何一个相等,那么这种类型的对象被认为是相等的。我如何为这样的equals()编写hashCode()函数,以便保留当equals返回true时hashCode相等的一般约定?publicclassMyClass{intid;Stringname;publicbooleanequals(Objecto){if(!(oinstanceofMyClass))returnfalse;MyClassother=(MyClass)o;if(other.id==this.id||other.name==this.name)returntrue;retur

java - 比较 Java 中的字符、整数和类似类型 : Use equals or ==?

我想用Java确定一些事情:如果我有一个Character或Integer或Long之类的东西,我应该使用equals还是==就足够了?我知道对于字符串,不能保证每个唯一字符串只有一个实例,但我不确定其他盒装类型。我的直觉是使用equals,但我想确保我没有浪费性能。 最佳答案 编辑:规范为装箱转换提供了一些保证。来自section5.1.7:Ifthevaluepbeingboxedistrue,false,abyte,acharintherange\u0000to\u007f,oranintorshortnumberbetwee

java - String.equals 实现

在JDK8中,String.equals实现为publicbooleanequals(ObjectanObject){if(this==anObject){returntrue;}if(anObjectinstanceofString){StringanotherString=(String)anObject;intn=value.length;if(n==anotherString.value.length){charv1[]=value;charv2[]=anotherString.value;inti=0;while(n--!=0){if(v1[i]!=v2[i])returnf

java - 有什么可以警告我不要使用 type.equals(incompatibleType) 吗?

是否有任何工具可以针对以下类型的代码警告我:if(someClass.equals(someString))例如:if(myObject.getClass().equals(myClassName))这样的东西在Java中是合法的(等于一个对象)但是永远不会计算为真(一个类永远不能等于一个字符串)所以几乎可以肯定是一个错误。我检查了Eclipse、FindBugs和PMD,但似乎都不支持此功能? 最佳答案 是的,IntelliJIDEA有这样的检查,我相信它是默认启用的。它标记以下内容:Classclazz=String.class

java - 为什么 String.equals 对于不相同(但相等)的 String 对象要慢得多?

我正在研究String.equals()是否真的很糟糕,并且在尝试对其进行一些基准测试时遇到了一些令人惊讶的结果。使用jmh,我写了一个简单的测试(最后是代码和pom),看看该函数可以在1秒内运行多少次。BenchmarkModeSamplesScoreScoreerrorUnitsc.s.SimpleBenchmark.testEqualsInternthrpt5698910949.71047115846.650ops/sc.s.SimpleBenchmark.testEqualsNewthrpt5529118.77421164.872ops/sc.s.SimpleBenchmark

java - 循环条件 : why "not-equal" instead of "lower-than"

我被分配到一个Android-Java(实时游戏)项目,该项目具有大量(部分遗留)代码库。我看到的大部分循环都是这样的(这里mjk通常是Java数组):intcount=mjk.length;for(inti=0;i!=count;++i){//Stuffdealingwithmjk[i]}我通常写这样的循环:intcount=mjk.length;for(inti=0;i知道为什么原作者(到目前为止我无法联系到他)使用以前的表格吗?在C++中常见吗?我问这个的实际原因是JIT优化:据我所知,Android优化循环(归纳变量、不变量、范围检查迁移到循环序言等),我想知道不等于是否可以阻