hashCode () dla tablicy obiektów do użycia w HashMap

Mam następujące dwie klasy i chcę z nich korzystaćFoo1 jako klucze wHashMap. DwaFoo1 obiekty są równe, jeśli ichFoo2 obiekty są równe iFoo2 obiekty są równe, jeśli ich tablice bajtów spełniająArrays.equals().

Nie jestem do końca pewien, co zrobić dlahashCode() metoda dlaFoo1. Czy muszę tylko podsumować hashcodes z każdego z nichFoo2 czy jest to nieefektywne?

public class Foo1 {

  Foo2[] foo2_array;

  @Override
  public boolean equals(Object Other) {

     for (int i = 0; i < foo2_array.length; i++) {

        if (!foo2_array[i].equals(other.foo2_array[i])
          return false;
     }

     return true;
   }

   @Override
   public int hashCode() {

      // what to here?
   }
}

public class Foo2 {

  byte[] values;

  @Override
  public boolean equals(Object other) {

      return Arrays.equals(values, other.values);
  }

  @Override
  public int hashCode() {

     return Arrays.hashCode(values);
  }
}

questionAnswers(2)

yourAnswerToTheQuestion