¡Hola Daniel!
Tienes razón, si dos objetos diferentes tienen el mismo nombre, el método equals y hashCode tomarán esos atributos para compararlos y considerarlos iguales. Esto puede ser un problema en algunos casos, pero hay formas de solucionarlo.
Una opción es agregar más atributos en la comparación, para que no solo se tome en cuenta el nombre. Por ejemplo, si tienes una clase "Persona" con atributos como nombre, edad y número de identificación, puedes incluir todos estos atributos en la comparación para asegurarte de que dos objetos diferentes no sean considerados iguales solo por tener el mismo nombre.
Otra opción es utilizar un identificador único para cada objeto, como un número de serie o un UUID. De esta manera, aunque dos objetos tengan el mismo nombre, serán considerados diferentes porque tienen identificadores únicos diferentes.
Espero que esto te ayude a solucionar tu problema de lógica. ¡Buenos estudios!