Author: scolebourne
Date: Fri Mar  4 12:31:24 2011
New Revision: 1077910

URL: http://svn.apache.org/viewvc?rev=1077910&view=rev
Log:
[LANG-492] Revert deletion of ArrayUtils.hashCode()

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ArrayUtils.java
    
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ArrayUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ArrayUtils.java?rev=1077910&r1=1077909&r2=1077910&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ArrayUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ArrayUtils.java
 Fri Mar  4 12:31:24 2011
@@ -21,6 +21,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -182,6 +183,18 @@ public class ArrayUtils {
     }
 
     /**
+     * <p>Get a hash code for an array handling multi-dimensional arrays 
correctly.</p>
+     *
+     * <p>Multi-dimensional primitive arrays are also handled correctly by 
this method.</p>
+     *
+     * @param array  the array to get a hash code for, <code>null</code> 
returns zero
+     * @return a hash code for the array
+     */
+    public static int hashCode(Object array) {
+        return new HashCodeBuilder().append(array).toHashCode();
+    }
+
+    /**
      * <p>Compares two arrays, using equals(), handling multi-dimensional 
arrays
      * correctly.</p>
      *

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java?rev=1077910&r1=1077909&r2=1077910&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
 Fri Mar  4 12:31:24 2011
@@ -71,6 +71,23 @@ public class ArrayUtilsTest extends Test
     }
 
     //-----------------------------------------------------------------------
+    public void testHashCode() {
+        long[][] array1 = new long[][] {{2,5}, {4,5}};
+        long[][] array2 = new long[][] {{2,5}, {4,6}};
+        assertEquals(true, ArrayUtils.hashCode(array1) == 
ArrayUtils.hashCode(array1));
+        assertEquals(false, ArrayUtils.hashCode(array1) == 
ArrayUtils.hashCode(array2));
+        
+        Object[] array3 = new Object[] {new String(new char[] {'A', 'B'})};
+        Object[] array4 = new Object[] {"AB"};
+        assertEquals(true, ArrayUtils.hashCode(array3) == 
ArrayUtils.hashCode(array3));
+        assertEquals(true, ArrayUtils.hashCode(array3) == 
ArrayUtils.hashCode(array4));
+        
+        Object[] arrayA = new Object[] {new boolean[] {true, false}, new int[] 
{6, 7}};
+        Object[] arrayB = new Object[] {new boolean[] {true, false}, new int[] 
{6, 7}};
+        assertEquals(true, ArrayUtils.hashCode(arrayB) == 
ArrayUtils.hashCode(arrayA));
+    }
+
+    //-----------------------------------------------------------------------
     private void assertIsEquals(Object array1, Object array2, Object array3) {
         assertEquals(true, ArrayUtils.isEquals(array1, array1));
         assertEquals(true, ArrayUtils.isEquals(array2, array2));


Reply via email to