J'ai ces deux objets.comparer le contenu de deux HashMaps avec set <> valeur
public Map<String, Set<RuleConditionBl>> countryToNonSplittedRules1 = new HashMap<>;
public Map<String, Set<RuleConditionBl>> countryToNonSplittedRules2 = new HashMap<>;
J'ai un test qui compare ces deux
et même si leur contenu est le même, je reçois faux pour
countryToNonSplittedRules1.equals(countryToNonSplittedRules2);
est un exemple ici:
I lire post, donc je ne sais pas pourquoi ne pas ce retour true
public class RuleConditionBl {
public int weight;
public boolean isAll;
public List<String> countries;
public UserFlag userFlag;
@JsonIgnore
private Range<LocalDate> datesRange;
public String fromDate;
public String toDate;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RuleConditionBl that = (RuleConditionBl) o;
if (weight != that.weight) return false;
if (isAll != that.isAll) return false;
if (countries != null ? !countries.equals(that.countries) : that.countries != null) return false;
if (userFlag != that.userFlag) return false;
return datesRange != null ? datesRange.equals(that.datesRange) : that.datesRange == null;
}
@Override
public int hashCode() {
// int result = weight;
int result = 0;
result = 31 * result + (isAll ? 1 : 0);
result = 31 * result + (countries != null ? countries.hashCode() : 0);
result = 31 * result + (userFlag != null ? userFlag.hashCode() : 0);
result = 31 * result + (datesRange != null ? datesRange.hashCode() : 0);
return result;
}
{
La seule chose que l'on ne peut pas observer dans votre capture d'écran: êtes-vous sûr que les pays sont égaux? Et pour faciliter le débogage: pourquoi ne pas ajouter un joli toString() et imprimer le contenu des deux maps? – GhostCat
Pourquoi avez-vous supprimé votre autre question? ** Encore **, le poids devrait être inclus dans 'hashCode'. – Michael
Vous ne devriez pas comparer les instances 'UserFlag' avec' userFlag! = That.userFlag' (même si les deux semblent être nulles dans votre exemple, cela ne devrait donc pas affecter le résultat). L'utilisation est égale à – Eran