import java.util.*;

/****
 *
 * Examples of how equality works for array values.  We discussed this briefly
 * during lecture week 2, but did not go into depth on the subject.  This
 * example provides some further detail that may be useful later in the
 * quarter.
 *
 */
public class ArrayEquality {

    public static void main(String[] args) {

        int[] a1 = {1, 2, 3};
        int[] a2 = {1, 2, 3};
        int[] a3 = new int[3];
        a3[0] = 1; a3[1] = 2; a3[2] = 3; 
        int[] a4 = new int[3];
        a4[0] = 1; a4[1] = 2; a4[2] = 3; 

        System.out.println(a1 == a2);                   // false
        System.out.println(a1 == a3);                   // false
        System.out.println(a3 == a4);                   // false

        System.out.println(a1.equals(a2));              // false
        System.out.println(a1.equals(a3));              // false
        System.out.println(a3.equals(a4));              // false

        System.out.println(Arrays.equals(a1, a2));      // true
        System.out.println(Arrays.equals(a1, a3));      // true
        System.out.println(Arrays.equals(a1, a4));      // true

        System.out.println(arrayEquals(a1, a2));        // true
        a1[0] = 0;
        System.out.println(arrayEquals(a1, a2));        // false
        int a5[] = {1, 2, 3, 4, 5};
        System.out.println(arrayEquals(a1, a5));        // false
    }


    private static boolean arrayEquals(int[] a1, int[] a2) {
        boolean aeq = a1.length == a2.length;

        if (aeq) {
            for (int i = 0; i < a1.length; i++) {
                if (a1[i] != a2[i]) {
                    aeq = false;
                }
            }
        }

        return aeq;
    }

}