Java Array Equal arraysAreEqual(Object value, Object otherValue)

Here you can find the source of arraysAreEqual(Object value, Object otherValue)

Description

Returns true if the objects are array instances and each of their elements compares via equals as well.

License

BSD License

Parameter

Parameter Description
value Object
otherValue Object

Return

boolean

Declaration

public static boolean arraysAreEqual(Object value, Object otherValue) 

Method Source Code

//package com.java2s;
/**/*from w  w  w  .  j  a  v  a  2  s  . c  o m*/
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 */

public class Main {
    /**
     * Returns true if the objects are array instances and each of their
     * elements compares via equals as well.
     *
     * @param value
     *            Object
     * @param otherValue
     *            Object
     * @return boolean
     */
    public static boolean arraysAreEqual(Object value, Object otherValue) {
        if (value instanceof Object[]) {
            if (otherValue instanceof Object[]) {
                return valuesAreTransitivelyEqual((Object[]) value, (Object[]) otherValue);
            }
            return false;
        }
        return false;
    }

    /**
     * Returns whether the arrays are equal by examining each of their elements,
     * even if they are arrays themselves.
     *
     * @param thisArray
     *            Object[]
     * @param thatArray
     *            Object[]
     * @return boolean
     */
    public static boolean valuesAreTransitivelyEqual(Object[] thisArray, Object[] thatArray) {
        if (thisArray == thatArray) {
            return true;
        }
        if (thisArray == null || thatArray == null) {
            return false;
        }
        if (thisArray.length != thatArray.length) {
            return false;
        }
        for (int i = 0; i < thisArray.length; i++) {
            if (!areEqual(thisArray[i], thatArray[i])) {
                return false; // recurse if req'd
            }
        }
        return true;
    }

    /**
     * A comprehensive isEqual method that handles nulls and arrays safely.
     *
     * @param value
     *            Object
     * @param otherValue
     *            Object
     * @return boolean
     */
    @SuppressWarnings("PMD.CompareObjectsWithEquals")
    public static boolean areEqual(Object value, Object otherValue) {
        if (value == otherValue) {
            return true;
        }
        if (value == null) {
            return false;
        }
        if (otherValue == null) {
            return false;
        }

        if (value.getClass().getComponentType() != null) {
            return arraysAreEqual(value, otherValue);
        }
        return value.equals(otherValue);
    }
}

Related

  1. arrayEquals(String[] targetMethodParamTypes, String[] paramTypes)
  2. arrayEqualsExceptNull(Object[] a1, Object[] a2)
  3. arrayEqualsSubset(final byte[] array, final int... elements)
  4. arraysAreEqual(double[] a1, double[] a2)
  5. arraysAreEqual(final byte[] array1, final byte[] array2)
  6. arraysEqual(boolean[] a, boolean[] b)
  7. arraysEqual(byte array1[], byte array2[])
  8. arraysEqual(byte[] bytes, byte[] ints)
  9. arraysEqual(final Object[] a1, final Object[] a2)