diff --git a/modules/library/referencing/src/main/java/org/geotools/referencing/operation/transform/NTv2Transform.java b/modules/library/referencing/src/main/java/org/geotools/referencing/operation/transform/NTv2Transform.java
index 5548917..bafbdfe 100644
--- a/modules/library/referencing/src/main/java/org/geotools/referencing/operation/transform/NTv2Transform.java
+++ b/modules/library/referencing/src/main/java/org/geotools/referencing/operation/transform/NTv2Transform.java
@@ -35,7 +35,9 @@ import org.geotools.referencing.factory.IdentifiedObjectSet;
 import org.geotools.referencing.factory.gridshift.GridShiftLocator;
 import org.geotools.referencing.factory.gridshift.NTv2GridShiftFactory;
 import org.geotools.referencing.operation.MathTransformProvider;
+import org.geotools.util.Utilities;
 import org.geotools.util.logging.Logging;
+import org.opengis.geometry.DirectPosition;
 import org.opengis.parameter.ParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.parameter.ParameterNotFoundException;
@@ -134,6 +136,38 @@ public class NTv2Transform extends AbstractMathTransform implements MathTransfor
     }
     
     /**
+     * Returns a hash value for this transform.
+     */
+    @Override
+    public int hashCode() {
+        return this.grid.hashCode();
+    }
+    
+    /**
+     * Compares the specified object with this one for equality.
+     * Checks if {@code object} is {@code this} same instance, or a NTv2Transform
+     * with the same parameter values.
+     *
+     * @param object The object to compare with this transform.
+     * @return {@code true} if the given object is {@code this}, or
+     *         a NTv2Transform with same parameter values, which would
+     *         mean that given identical source position, the
+     *         {@linkplain #transform(DirectPosition,DirectPosition) transformed}
+     *         position would be the same.
+     */
+    @Override
+    public boolean equals(final Object object) {
+        if(object==this) return true;
+        
+        if (object!=null && getClass().equals(object.getClass())) {
+            final NTv2Transform that = (NTv2Transform) object;
+            return Utilities.equals(this.getParameterValues(),
+                                    that.getParameterValues());
+        }
+        return false;
+    }
+    
+    /**
      * Returns the inverse of this transform.
      *
      * @return the inverse of this transform
