add test use ImmutablePair class with java.util.HashMap and java.util.TreeMap
diff --git a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
index 260879a..a5b0d9d 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
@@ -26,6 +26,11 @@
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.TreeMap;
 
 import org.junit.jupiter.api.Test;
 
@@ -136,4 +141,34 @@
         assertEquals(origPair, deserializedPair);
         assertEquals(origPair.hashCode(), deserializedPair.hashCode());
     }
+
+    @Test
+    public void testUseAsKeyOfHashMap() {
+        HashMap<ImmutablePair<Object, Object>, String> map = new HashMap<>();
+        Object o1 = new Object();
+        Object o2 = new Object();
+        ImmutablePair<Object, Object> key1 = ImmutablePair.of(o1, o2);
+        String value1 = "a1";
+        map.put(key1, value1);
+        assertEquals(value1, map.get(key1));
+        assertEquals(value1, map.get(ImmutablePair.of(o1, o2)));
+    }
+
+    @Test
+    public void testUseAsKeyOfTreeMap() {
+        TreeMap<ImmutablePair<Integer, Integer>, String> map = new TreeMap<>();
+        map.put(ImmutablePair.of(1, 2), "12");
+        map.put(ImmutablePair.of(1, 1), "11");
+        map.put(ImmutablePair.of(0, 1), "01");
+        ArrayList<ImmutablePair<Integer, Integer>> expected = new ArrayList<>();
+        expected.add(ImmutablePair.of(0, 1));
+        expected.add(ImmutablePair.of(1, 1));
+        expected.add(ImmutablePair.of(1, 2));
+        Iterator<Entry<ImmutablePair<Integer, Integer>, String>> it = map.entrySet().iterator();
+        for(ImmutablePair<Integer, Integer> item : expected) {
+            Entry<ImmutablePair<Integer, Integer>, String> entry = it.next();
+            assertEquals(item, entry.getKey());
+            assertEquals(item.getLeft() + "" + item.getRight(), entry.getValue());
+        }
+    }
 }
diff --git a/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java b/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
index 8f76000..fe73930 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
@@ -26,6 +26,11 @@
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.TreeMap;
+import java.util.Map.Entry;
 
 import org.junit.jupiter.api.Test;
 
@@ -142,5 +147,36 @@
         assertEquals(origTriple, deserializedTriple);
         assertEquals(origTriple.hashCode(), deserializedTriple.hashCode());
     }
+
+    @Test
+    public void testUseAsKeyOfHashMap() {
+        HashMap<ImmutableTriple<Object, Object, Object>, String> map = new HashMap<>();
+        Object o1 = new Object();
+        Object o2 = new Object();
+        Object o3 = new Object();
+        ImmutableTriple<Object, Object, Object> key1 = ImmutableTriple.of(o1, o2, o3);
+        String value1 = "a1";
+        map.put(key1, value1);
+        assertEquals(value1, map.get(key1));
+        assertEquals(value1, map.get(ImmutableTriple.of(o1, o2, o3)));
+    }
+
+    @Test
+    public void testUseAsKeyOfTreeMap() {
+        TreeMap<ImmutableTriple<Integer, Integer, Integer>, String> map = new TreeMap<>();
+        map.put(ImmutableTriple.of(0, 1, 2), "012");
+        map.put(ImmutableTriple.of(0, 1, 1), "011");
+        map.put(ImmutableTriple.of(0, 0, 1), "001");
+        ArrayList<ImmutableTriple<Integer, Integer, Integer>> expected = new ArrayList<>();
+        expected.add(ImmutableTriple.of(0, 0, 1));
+        expected.add(ImmutableTriple.of(0, 1, 1));
+        expected.add(ImmutableTriple.of(0, 1, 2));
+        Iterator<Entry<ImmutableTriple<Integer, Integer, Integer>, String>> it = map.entrySet().iterator();
+        for(ImmutableTriple<Integer, Integer, Integer> item : expected) {
+            Entry<ImmutableTriple<Integer, Integer, Integer>, String> entry = it.next();
+            assertEquals(item, entry.getKey());
+            assertEquals(item.getLeft() + "" + item.getMiddle() + "" + item.getRight(), entry.getValue());
+        }
+    }
 }