草庐IT

hashCodes

全部标签

java - 将父类(super class)合并到 Guava Objects.hashcode() 实现中的正确方法?

可能是一个愚蠢的问题,但我不想搞砸。假设我有两个Java类,Class1和Class2,其中Class2扩展了Class1。我想为这两个类使用Guava覆盖Object.hashcode()。对于父类(superclass),我有@OverridepublicinthashCode(){returnObjects.hashcode(mField1,mField2);}对于Class2,考虑Class1的成员的hashcode()实现的正确方法是什么?是这样的吗?@Overridepublicinthashcode(){returnObjects.hashcode(super.hashc

java - 可变集合应该覆盖equals和hashCode吗?

我只是想知道为可变集合覆盖equals和hashCode是否是个好主意。这意味着如果我将这样的集合插入到HashSet中,然后修改该集合,则HashSet将不再能够找到该集合。这是否意味着只有不可变的集合才应该覆盖equals和hashCode,还是Java程序员只能忍受这样的麻烦? 最佳答案 如果你的类应该表现得像一个值类型,你应该重写equals和hashCode。集合通常不是这种情况。(我真的没有太多Java经验。这个答案是基于C#的。) 关于java-可变集合应该覆盖equals

java - 可变集合应该覆盖equals和hashCode吗?

我只是想知道为可变集合覆盖equals和hashCode是否是个好主意。这意味着如果我将这样的集合插入到HashSet中,然后修改该集合,则HashSet将不再能够找到该集合。这是否意味着只有不可变的集合才应该覆盖equals和hashCode,还是Java程序员只能忍受这样的麻烦? 最佳答案 如果你的类应该表现得像一个值类型,你应该重写equals和hashCode。集合通常不是这种情况。(我真的没有太多Java经验。这个答案是基于C#的。) 关于java-可变集合应该覆盖equals

java - 如何实现 hashCode 和 equals 方法

我应该如何在Java中为以下类实现hashCode()和equals()?classEmp{intempid;//uniqueacrossallthedepartmentsStringname;Stringdept_name;Stringcode;//uniqueforthedepartment} 最佳答案 在Eclipse中单击鼠标右键->源代码->生成hashCode()和equals()给出:/*(non-Javadoc)*@seejava.lang.Object#hashCode()*/@Overridepublicinth

java - 如何实现 hashCode 和 equals 方法

我应该如何在Java中为以下类实现hashCode()和equals()?classEmp{intempid;//uniqueacrossallthedepartmentsStringname;Stringdept_name;Stringcode;//uniqueforthedepartment} 最佳答案 在Eclipse中单击鼠标右键->源代码->生成hashCode()和equals()给出:/*(non-Javadoc)*@seejava.lang.Object#hashCode()*/@Overridepublicinth

java - 为 case 类的 equals/hashCode 方法生成什么代码?

我有一些Java代码要翻译成Scala。代码由一些不可变的类组成,这些类符合Scala中case类的目的。但我不想引入错误,因此我想确保为equals和hashCode生成的代码与当前实现等效.我已经看过“Scala编程”,但它只是说Third,thecompileradds“natural”implementationsofmethodstoString,hashCode,andequalstoyourclass. 最佳答案 Scala有一个编译器选项-Xprint:typer,您可以使用它来获取“它在内部使用的打字后源代码”。s

java - 为 case 类的 equals/hashCode 方法生成什么代码?

我有一些Java代码要翻译成Scala。代码由一些不可变的类组成,这些类符合Scala中case类的目的。但我不想引入错误,因此我想确保为equals和hashCode生成的代码与当前实现等效.我已经看过“Scala编程”,但它只是说Third,thecompileradds“natural”implementationsofmethodstoString,hashCode,andequalstoyourclass. 最佳答案 Scala有一个编译器选项-Xprint:typer,您可以使用它来获取“它在内部使用的打字后源代码”。s

java - 父类(super class)不重新声明equals()和hashCode()会出什么问题?

假设有两个这样的类:abstractclassA{/*someirrelevantmethods*/}classBextendsA{publicfinalintx;publicB(finalintx){this.x=x;}/*somemoreirrelevantmethods*/}然后我使用Eclipse的“Source→GeneratehashCode()andequals”在类B上生成equals()和hashCode()方法()……”。但Eclipse警告我:Thesuperclass'com.example.test2.A'doesnotredeclareequals()and

java - 父类(super class)不重新声明equals()和hashCode()会出什么问题?

假设有两个这样的类:abstractclassA{/*someirrelevantmethods*/}classBextendsA{publicfinalintx;publicB(finalintx){this.x=x;}/*somemoreirrelevantmethods*/}然后我使用Eclipse的“Source→GeneratehashCode()andequals”在类B上生成equals()和hashCode()方法()……”。但Eclipse警告我:Thesuperclass'com.example.test2.A'doesnotredeclareequals()and

java - 为什么在添加到 HashSet 和 hashCode 匹配时不调用 equals()?

当我运行此代码时,为什么只调用hashCode()而不是equals方法,而我的hashCode()实现生成相同的HashSet的两个条目的hashCode?importjava.util.HashSet;publicclassTest1{publicstaticvoidmain(String[]args){Studentst=newStudent(89);HashSetst1=newHashSet();st1.add(st);st1.add(st);System.out.println("Hosize="+st1.size());}}classStudent{privateintna