v
from the array associated with k
.If the associated array does not contain v
, do nothing. If the
associated array only contain one element and this element is v
, remove
the key k
.
In a nutshell, does the inverse operation of add_one
.
var m = new MultiHashMap[String, Char]
m["four"] = ['4', 'i', 'i', 'i', 'i']
m.remove_one("four", 'i')
assert m["four"] == ['4', 'i', 'i', 'i']
m = new MultiHashMap[String, Char]
m.add_one("one", '1')
m.remove_one("one", '?')
assert m["one"] == ['1']
m.remove_one("one", '1')
assert not m.has_key("one")
assert m["one"] == new Array[Char]
m = new MultiHashMap[String, Char]
m.add_one("one", '1')
m.remove_one("two", '2')
assert not m.has_key("two")
assert m["one"] == ['1']
assert m["two"] == new Array[Char]
# Remove an occurrence of `v` from the array associated with `k`.
#
# If the associated array does not contain `v`, do nothing. If the
# associated array only contain one element and this element is `v`, remove
# the key `k`.
#
# In a nutshell, does the inverse operation of `add_one`.
#
# ```
# var m = new MultiHashMap[String, Char]
# m["four"] = ['4', 'i', 'i', 'i', 'i']
# m.remove_one("four", 'i')
# assert m["four"] == ['4', 'i', 'i', 'i']
#
# m = new MultiHashMap[String, Char]
# m.add_one("one", '1')
# m.remove_one("one", '?')
# assert m["one"] == ['1']
# m.remove_one("one", '1')
# assert not m.has_key("one")
# assert m["one"] == new Array[Char]
#
# m = new MultiHashMap[String, Char]
# m.add_one("one", '1')
# m.remove_one("two", '2')
# assert not m.has_key("two")
# assert m["one"] == ['1']
# assert m["two"] == new Array[Char]
# ```
fun remove_one(k: K, v: V)
do
var x = get_or_null(k)
if x != null then
x.remove(v)
if x.is_empty then keys.remove(k)
end
end
lib/more_collections/more_collections.nit:69,2--105,4