diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java b/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java
index 0ba06d5..908b849 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java
@@ -106,6 +106,16 @@
         if (object == this) return true;
         if (getClass() != object.getClass()) return false;
         Form form = (Form) object;
-        return parameters.equals(form.asMap());
+        return parameters.equals(form.parameters);
+    }
+
+    /**
+     * Returns the hashCode of the underlying form parameters.
+     * 
+     * @return a hash code value for the underlying form parameters.
+     */
+    @Override
+    public int hashCode() {
+        return parameters.hashCode();
     }
 }
diff --git a/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java b/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java
index 9d4a855..8928eeb 100644
--- a/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java
+++ b/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2024 David Walters. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -22,6 +22,18 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class FormTest {
+
+    private static final String AGE_FIELD = "age";
+    
+    private static final String AGE_VALUE = "25";
+
+    private static final String LOCATION_FIELD = "location";
+
+    private static final String LOCATION_VALUE = "USA";
+
+    private static final String NAME_FIELD = "name";
+
+    private static final String NAME_VALUE = "john";
     
     @Test
     public void testNullEquals() {
@@ -38,16 +50,12 @@
     @Test
     public void testDifferentObjectTypeEquals() {
         Form form = new Form("field", "value");
-        Boolean booleanValue = new Boolean(false);
+        Boolean booleanValue = Boolean.TRUE;
         assertFalse(form.equals(booleanValue));
     }
 
     @Test
     public void testFormContentEquals() {
-        final String NAME_FIELD = "name";
-        final String AGE_FIELD = "age";
-        final String NAME_VALUE = "john";
-        final String AGE_VALUE = "25";
         Form form1 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
         Form form2 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
         assertTrue(form1.equals(form2));
@@ -55,7 +63,16 @@
         assertTrue(form1.equals(form2));
         form2 = new Form(AGE_VALUE, AGE_FIELD).param(NAME_VALUE, NAME_FIELD);
         assertFalse(form1.equals(form2));
-        form2 = new Form(AGE_FIELD, AGE_VALUE).param(NAME_FIELD,NAME_VALUE).param("location", "USA");
+        form2 = new Form(AGE_FIELD, AGE_VALUE).param(NAME_FIELD,NAME_VALUE).param(LOCATION_FIELD, LOCATION_VALUE);
         assertFalse(form1.equals(form2));
     }
+
+    @Test
+    public void testHashCode() {
+        Form form1 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
+        Form form2 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
+        assertTrue(form1.hashCode() == form2.hashCode());
+        form2.param(LOCATION_FIELD, LOCATION_VALUE);
+        assertFalse(form1.hashCode() == form2.hashCode());
+    }
 }
