我需要对Groovy映射中的所有条目进行浅层复制,除了一个我已经知道密钥的条目。我更喜欢不可变和简洁的方法,minus()
方法非常合适,除非提供密钥不够,我必须做这样的事情:
def map = [a:"aa", b:"bb"]
def knownKey = "a"
def result = map - [(knownKey):map[knownKey]]
assert result == [b:"bb"]
或者我可以放弃(临时)不变性并使用键作为参数调用remove()
方法。
我可以采取一种常规方法吗?
答案 0 :(得分:8)
您应该使用findAll
,如下所示:
def map = [a:"aa", b:"bb"]
def knownKey = "a"
def result = map.findAll { it.key != knownKey }
assert result == [b:"bb"]