集册 Java实例教程 返回数组是否相等,方法是检查每个元素,即使它们本身是数组。

返回数组是否相等,方法是检查每个元素,即使它们本身是数组。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

509
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
返回数组是否相等,方法是检查每个元素,即使它们本身是数组。


//package com.nowjava;
/**来 自 nowjava.com**/

public class Main {

    public static void main(String[] argv) {

        Object[] thisArray = new String[] { "1", "abc", "level", null,

                "nowjava.com", "asdf 123" };

        Object[] thatArray = new String[] { "1", "abc", "level", null,

                "nowjava.com", "asdf 123" };

        System.out

                .println(valuesAreTransitivelyEqual(thisArray, thatArray));

    }


    /**

     * 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 final boolean valuesAreTransitivelyEqual(
    /** 
    来 自 
    nowjava - 时代Java
    **/

            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

     */

    public static final 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);

    }


    /**

     * 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 
展开阅读全文