相关疑难解决方法(0)

617
推荐指数
11
解决办法
57万
查看次数

如何确保hashCode()与equals()一致?

当覆盖java.lang.Object的equals()函数时,javadocs建议,

通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等的对象必须具有相等的哈希代码.

hashCode()方法必须为每个对象返回一个唯一的整数(这在基于内存位置比较对象时很容易,只需返回对象的唯一整数地址)

应该如何覆盖hashCode()方法,以便它仅基于该对象的特性为每个对象返回一个唯一的整数


public class People{
   public String name;
   public int age;

   public int hashCode(){
      // How to get a unique integer based on name and age?
   }
}
/*******************************/
public class App{
   public static void main( String args[] ){
       People mike = new People();
       People melissa = new People();
       mike.name = "mike";
       mike.age = 23;
       melissa.name = "melissa";
       melissa.age = 24;
       System.out.println( mike.hasCode() );  // output?
       System.out.println( melissa.hashCode(); // output?
   }
}
Run Code Online (Sandbox Code Playgroud)

java equals object hashcode

23
推荐指数
3
解决办法
7073
查看次数

12
推荐指数
2
解决办法
1820
查看次数

标签 统计

java ×3

equals ×2

hashcode ×2

guava ×1

object ×1

overriding ×1