Zeitangaben und hashCode()

Wir betrachten folgende Klasse zur Darstellung von Zeitdauern kleiner als einem Tag:

public class ZeitDauer {
  final int stunden, minuten, sekunden;

  /**
   * Zeitangabe kleiner als 1 Tag
   *
   * @param stunden Werte von 0 bis 23
   * @param minuten Werte von 0 bis 59
   * @param sekunden Werte von 0 bis 59
   */
  public ZeitDauer(final int stunden, final int minuten, final int sekunden) {
    this.stunden = stunden;
    this.minuten = minuten;
    this.sekunden = sekunden;
  }
}

Für diese Klasse kann man zwei verschiedene hashCode() Methoden passend zur üblichen Definition der Gleichheit zweier Zeitdauerangaben definieren:

Methode 1 Methode 2
public class ZeitDauer {
...
  @Override public int hashCode() {
    return sekunden + 60 * minuten
          + 3600 * stunden;
  }
}
public class ZeitDauer {
...
  @Override public int hashCode() {
    return sekunden + minuten + stunden;
  }
}

Welche der beiden Methoden ist besser in Bezug auf die Prüfung der Ungleichheit zweier Instanzen? Begründen Sie Ihre Aussage.

Hinweis: Auszug aus der Dokumentation von hashCode():

However, the programmer should be aware that producing distinct integer
results for unequal objects may improve the performance of hash tables.