diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/EqualsUtil.java b/smack-core/src/main/java/org/jivesoftware/smack/util/EqualsUtil.java index 8110358a7..65b185740 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/EqualsUtil.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/EqualsUtil.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smack.util; +import java.util.List; + public final class EqualsUtil { private EqualsUtil() { @@ -244,6 +246,19 @@ public final class EqualsUtil { }); return this; } + + public Builder append(List left, List right) { + nullSafeCompare(left, right, () -> { + if (left.size() != right.size()) { + isEquals = false; + return; + } + for (int i = 0; i < left.size() && isEquals; i++) { + append(left.get(i), right.get(i)); + } + }); + return this; + } } } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/HashCode.java b/smack-core/src/main/java/org/jivesoftware/smack/util/HashCode.java index 79065850d..61a36f633 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/HashCode.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/HashCode.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smack.util; +import java.util.List; + public class HashCode { private static final int MULTIPLIER_VALUE = 37; @@ -203,6 +205,17 @@ public class HashCode { return this; } + public Builder append(List list) { + if (list == null) { + applyHash(); + return this; + } + for (O o : list) { + append(o); + } + return this; + } + public int build() { return hashcode; }