我需要查找并修改集合中的重复条目。
我可以执行以下操作,该操作有效,但需要几个步骤。
是否有更清晰的方法来实现最终输出,指示所有具有重复项的条目?
void "test find and mark duplicate entries"() {
given:
def sports = ["baseball", "basketball", "football", "basketball", "basketball", "football", "soccer", "volleyball"]
when:
def duplicateEntries = sports.findAll { sports.count(it) > 1 }.unique()
then:
duplicateEntries == ["basketball", "football"]
when:
sports = sports.collect {
if (duplicateEntries.contains(it)) {
return it + "-dupe"
} else {
return it
}
}
then:
sports == ["baseball", "basketball-dupe", "football-dupe", "basketball-dupe", "basketball-dupe", "football-dupe", "soccer", "volleyball"]
}
最佳答案
与其他答案相同的复杂性,只是内存效率更高;-)
def sports = ["baseball", "basketball", "football", "basketball", "basketball", "football", "soccer", "volleyball"]
sports.collect { sports.count(it) > 1 ? "$it-dupe" : it }
关于groovy - 查找并修改集合中的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497665/