hashCode () para uma matriz de objetos para uso no HashMap

Eu tenho as duas classes seguintes e quero usarFoo1 como chaves em umHashMap. DoisFoo1 objetos são iguais se o seuFoo2 objetos são iguais eFoo2 objetos são iguais se suas matrizes de byte satisfizeremArrays.equals().

Eu não tenho certeza do que fazer para ohashCode() método paraFoo1. Eu só preciso resumir os hashcodes de cada um de seusFoo2 objetos ou isso é ineficiente?

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