有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    不,您应该提供哈希代码。你永远不知道明天你可能需要在那里使用它

  2. # 2 楼答案

    如果A.equals(B),则A.hashCode() == B.hashCode()必须为true

    如果!A.equals(B)虽然如此,A.hashCode() == B.hashCode()仍然可以为真

    如果在重写equals()时不重写hashCode(),那么将对象放入某些集合实际上会丢失对象(它们不会检索)。因此,要么正确地重写hashCode(),要么将其重写为return 1。这将满足约束并正常工作,但如果您开始将大量约束放入基于散列的集合中,则会对性能造成严重影响

  3. # 3 楼答案

    这不是绝对必要的,但是如果您以后决定存储和排序对象,那么最好这样做

  4. # 4 楼答案

    这是绝对必要的吗?没有

    这是最佳实践吗?对

    如果你在6个月内不这样做,它会回来咬你吗?也许吧

  5. # 5 楼答案

    如果您总是重写这些方法,您将不会花费太多精力,更现代的IDE将为您提供此功能

  6. # 6 楼答案

    Equal objects must have equal hash codes;这是任何课程的合同

    如果您觉得太懒了,无法实现一个像样的hashCode方法,那么您仍然可以遵守此实现的约定:

      @Override public int hashCode() {
        return 0;
      }
    

    它在基于散列的集合中的性能很差,但至少是正确的