除了一个条目从groovy地图浅的复制

时间:2014-09-04 19:53:26

标签: groovy map

我需要对Groovy映射中的所有条目进行浅层复制,除了一个我已经知道密钥的条目。我更喜欢不可变和简洁的方法,minus()方法非常合适,除非提供密钥不够,我必须做这样的事情:

def map = [a:"aa", b:"bb"]

def knownKey = "a"
def result = map - [(knownKey):map[knownKey]]
assert result == [b:"bb"]

或者我可以放弃(临时)不变性并使用键作为参数调用remove()方法。

我可以采取一种常规方法吗?

1 个答案:

答案 0 :(得分:8)

您应该使用findAll,如下所示:

def map = [a:"aa", b:"bb"]
def knownKey = "a"
def result = map.findAll { it.key != knownKey }
assert result == [b:"bb"]