Есть два списка с одинаковым содержимым:
List<Integer> ar1 = new ArrayList<>();
ar1.add(1);
ar1.add(2);
ar1.add(3);
ar1.add(4);
ar1.add(4);
List<Integer> ar2 = new ArrayList<>();
ar2.add(1);
ar2.add(2);
ar2.add(3);
ar2.add(4);
ar2.add(4);
Их хеш-коды одинаковые:
System.out.println(ar1.hashCode()); // 29615265
System.out.println(ar2.hashCode()); // 29615265
System.out.println(ar1.equals(ar2)); // true
Значит, если будет стоять задача сравнить два списка (одинаковы ли они), то достаточно вычислить хеш двух списков? Или просто так совпало, что их хеши одинаковые?
Списки лежат в разной области памяти, (два объекта ar1 и ar2) но содержимое и размер у них одинаковый.
При этом equals будет в цикле проходить по элементам списков, в то время как хеш возьмётся быстрее.