高效的哈希码函数

ako*_*ako 4 java hashcode

我有一个Employee有很多属性的类.其中一个属性是employeeId类型int.

我可以使用hascode功能Employee如下吗?

int hashCode(){
    return new Integer(employeeId).hashCode();
}
Run Code Online (Sandbox Code Playgroud)

它有效吗?

Mar*_*ers 17

怎么样:

return employeeId;
Run Code Online (Sandbox Code Playgroud)

  • 我不认为你能比这更有效率.:)假设您的employeeIds都是唯一的,这是一个很好的方法. (9认同)
  • @ako:它不仅有效率,它与`Integer.hashCode()`完全相同的值. (4认同)
  • @Suresh S:实际上,没有危险.在考虑哈希代码时,您应该只使用不可变属性,否则如果员工的属性是哈希映射中的键,则会改变该员工的属性,或者它是哈希集的成员将导致它在错误的桶中. (4认同)
  • 是的,返回一个整数是有效的. (3认同)
  • 此外,由于员工ID几乎肯定唯一地标识了员工,因此在我看来它是理想的哈希码,因为您可以保证不会发生冲突. (2认同)