hashCode () para una matriz de objetos para usar en HashMap

Tengo las siguientes dos clases y quiero usarFoo1 como llaves en unHashMap. DosFoo1 los objetos son iguales si suFoo2 los objetos son iguales, yFoo2 los objetos son iguales si sus matrices de bytes satisfacenArrays.equals().

No estoy muy seguro de qué hacer para elhashCode() método paraFoo1. ¿Necesito resumir los códigos hash de cada uno de susFoo2 ¿Objetos o es 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);
  }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta