X-Git-Url: http://nitlanguage.org diff --git a/lib/more_collections.nit b/lib/more_collections.nit index 4f75430..9fb05bb 100644 --- a/lib/more_collections.nit +++ b/lib/more_collections.nit @@ -13,7 +13,7 @@ # limitations under the License. # Highly specific, but useful, collections-related classes. -module more_collections +module more_collections is serialize import serialization @@ -32,7 +32,6 @@ import serialization # assert m["four"] == ['i', 'i', 'i', 'i'] # assert m["zzz"] == new Array[Char] class MultiHashMap[K, V] - auto_serializable super HashMap[K, Array[V]] # Add `v` to the array associated with `k`. @@ -64,7 +63,6 @@ end # assert hm2[2, "not-two"] == null # ~~~~ class HashMap2[K1, K2, V] - auto_serializable private var level1 = new HashMap[K1, HashMap[K2, V]] @@ -99,6 +97,13 @@ class HashMap2[K1, K2, V] level2.keys.remove(k2) end + # Is there a value at `k1, k2`? + fun has(k1: K1, k2: K2): Bool + do + if not level1.keys.has(k1) then return false + return level1[k1].keys.has(k2) + end + # Remove all items fun clear do level1.clear end @@ -113,7 +118,6 @@ end # assert hm3[2, "not-two", 22] == null # ~~~~ class HashMap3[K1, K2, K3, V] - auto_serializable private var level1 = new HashMap[K1, HashMap2[K2, K3, V]] @@ -148,6 +152,13 @@ class HashMap3[K1, K2, K3, V] level2.remove_at(k2, k3) end + # Is there a value at `k1, k2, k3`? + fun has(k1: K1, k2: K2, k3: K3): Bool + do + if not level1.keys.has(k1) then return false + return level1[k1].has(k2, k3) + end + # Remove all items fun clear do level1.clear end @@ -193,7 +204,6 @@ end # assert dma.default == [65] # ~~~~ class DefaultMap[K, V] - auto_serializable super HashMap[K, V] # The default value.