Ciao a tutti.

Mi sono imbattuto in un esercizio svolto in cui si fa l'override del metodo equals per confrontare due oggetti di tipo "Memoria".

Ogni oggetto Memoria contiene degli oggetti Variabile.

Non ho capito bene come il metodo verifica l'uguaglianza dei due oggetti:

codice:
@Override
public boolean equals(Object o){
if(o==this) return true;
if(o==null) return false;
if(!(o instanceof Memoria)) return false;
Memoria m = (Memoria)o;
for(Variabile v : this)
 if(!m.contains(v)) return false;
 for(Variabile v : m)
  if(!this.contains(v)) return false;
return true;
il metodo contains itera l'oggetti this per vedere se contiene la variaile v.

Questo equals non fa il confronto due volte?

Cioè basterebbe fare l confronto una sola volta :

codice:
@Override
public boolean equals(Object o){
if(o==this) return true;
if(o==null) return false;
if(!(o instanceof Memoria)) return false;
Memoria m = (Memoria)o;
for(Variabile v : this)
 if(!m.contains(v)) return false;
return true;
O forse ho interpretato male io?

Aiutatemi

CIAO