/*
* Javolution - Java(TM) Solution for Real-Time and Embedded Systems
* Copyright (C) 2012 - Javolution (http://javolution.org/)
* All rights reserved.
*
* Permission to use, copy, modify, and distribute this software is
* freely granted, provided that this notice is preserved.
*/
package javolution.util.internal.comparator;
import java.util.Arrays;
/**
* The array comparator implementation.
*/
public class ArrayComparatorImpl extends StandardComparatorImpl<Object> {
private static final long serialVersionUID = 0x600L; // Version.
@Override
public boolean equal(Object array1, Object array2) {
if (array1 == array2)
return true;
if ((array1 == null) || (array2 == null))
return false;
if (array1 instanceof Object[] && array2 instanceof Object[])
return Arrays.deepEquals((Object[]) array1, (Object[]) array2);
if (array1 instanceof byte[] && array2 instanceof byte[])
return Arrays.equals((byte[]) array1, (byte[]) array2);
if (array1 instanceof short[] && array2 instanceof short[])
return Arrays.equals((short[]) array1, (short[]) array2);
if (array1 instanceof int[] && array2 instanceof int[])
return Arrays.equals((int[]) array1, (int[]) array2);
if (array1 instanceof long[] && array2 instanceof long[])
return Arrays.equals((long[]) array1, (long[]) array2);
if (array1 instanceof char[] && array2 instanceof char[])
return Arrays.equals((char[]) array1, (char[]) array2);
if (array1 instanceof float[] && array2 instanceof float[])
return Arrays.equals((float[]) array1, (float[]) array2);
if (array1 instanceof double[] && array2 instanceof double[])
return Arrays.equals((double[]) array1, (double[]) array2);
if (array1 instanceof boolean[] && array2 instanceof boolean[])
return Arrays.equals((boolean[]) array1, (boolean[]) array2);
return array1.equals(array2);
}
@Override
public int hashOf(Object array) {
if (array instanceof Object[])
return Arrays.deepHashCode((Object[]) array);
if (array instanceof byte[])
return Arrays.hashCode((byte[]) array);
if (array instanceof short[])
return Arrays.hashCode((short[]) array);
if (array instanceof int[])
return Arrays.hashCode((int[]) array);
if (array instanceof long[])
return Arrays.hashCode((long[]) array);
if (array instanceof char[])
return Arrays.hashCode((char[]) array);
if (array instanceof float[])
return Arrays.hashCode((float[]) array);
if (array instanceof double[])
return Arrays.hashCode((double[]) array);
if (array instanceof boolean[])
return Arrays.hashCode((boolean[]) array);
if (array != null)
return array.hashCode();
return 0;
}
}