Ваши попытки создать различные строки с использованием конкатенации потерпят неудачу, так как это выполняется во время компиляции. Обе эти карты имеют одну пару; каждая пара будет иметь «foo» и «barbar» в качестве ключа / значения, оба используют одну и ту же строковую ссылку.
Если вы действительно хотите сравнить наборы значений без каких-либо ссылок на ключи, это всего лишь случай:
Set<String> values1 = new HashSet<>(map1.values());
Set<String> values2 = new HashSet<>(map2.values());
boolean equal = values1.equals(values2);
возможно , что сравнение map1.values()
с map2.values()
сработает - но также возможно, что порядок, в котором они возвращаются, будет использован при сравнении на равенство, а это не то, хотят.
Обратите внимание, что использование набора имеет свои проблемы - потому что приведенный выше код будет считать карту {"a": "0", "b": "0"} и {"c": "0"} в быть равным ... наборы значений равны, в конце концов.
Если бы вы могли дать более точное определение того, что вы хотите, вам будет легче убедиться, что мы дадим вам правильный ответ.