groovy - 查找并修改集合中的重复条目

标签 groovy

我需要查找并修改集合中的重复条目。

我可以执行以下操作,该操作有效,但需要几个步骤。

是否有更清晰的方法来实现最终输出,指示所有具有重复项的条目?

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/

相关文章:

Java编码: why the output is always the same?

用一些计算合并两个 map 列表的 Groovy 方法

xml - 如何将 XML 格式的字符串转换为 grails/groovy 中不带空格的单行 XML 字符串?

grails - 在grails map 中排序未在gsp中显示

jenkins - Jenkins 中的动态多选选择值

emacs - Grails是否可以emacs格式输出错误消息?

logging - 如何在 gradle 任务中使用 log4j

linux - 用于 Groovy/Grails 代码完成的足够好的 Linux IDE?

java - 为什么 .settings 文件丢失

groovy - 如何使用Gradle同步两个文件夹?