Groovy 删除列表中所有重复的整数

Groovy 删除列表中所有重复的整数,groovy,Groovy,给定列表[1,2,2,3,5,5,6] 我想完全删除重复的值,并获得:[1,3,6] 我正在寻找一个简单的解决方案,如果可能的话,它的复杂度和groovy函数都小于n^2 我正在使用的当前代码: def elements = [1,2,2,3,5,5,6] def occurrences = [:] elements.each { occurrences[it] = occurrences[it] ?: 0 occurrences[it] += 1 } elements.fi

给定列表[1,2,2,3,5,5,6]

我想完全删除重复的值,并获得:[1,3,6]

我正在寻找一个简单的解决方案,如果可能的话,它的复杂度和groovy函数都小于n^2

我正在使用的当前代码:

def elements = [1,2,2,3,5,5,6]

def occurrences = [:]
elements.each {
    occurrences[it] = occurrences[it] ?: 0
    occurrences[it] += 1
}

elements.findAll{ occurrences[it] == 1 }

我目前能想到的最好的办法是:

[1,2,2,3,5,5,6].countBy { it }.findAll { it.value == 1 }.keySet()

将结果保留为列表

……或者

[1,2,2,3,5,5,6].countBy { it }.findResults { it.value < 2 ? it.key : null }

我目前能想到的最好的办法是:

[1,2,2,3,5,5,6].countBy { it }.findAll { it.value == 1 }.keySet()

将结果保留为列表

……或者

[1,2,2,3,5,5,6].countBy { it }.findResults { it.value < 2 ? it.key : null }
这也会对你有所帮助

这也会对您有所帮助。

您也可以尝试:

def elements = [1,2,2,3,5,5,6]
def elementsAux = elements.collect()

elements.removeAll { elementsAux.count(it) > 1 }
您将获得:[1,3,6]

您还可以尝试:

def elements = [1,2,2,3,5,5,6]
def elementsAux = elements.collect()

elements.removeAll { elementsAux.count(it) > 1 }

如果你想要groovy,你会得到:[1,3,6]

那么为什么要标记[java]?D:因为我很愚蠢,抱歉@AndronicusPLease添加一个yes,这表示你当前的代码。完成了。对不起@NicktarIf你想要groovy,那你为什么要标记[java]?D:因为我很愚蠢,抱歉@AndronicusPLease添加一个yes,这表示你当前的代码。完成了。对不起@NicktarI不知道countBy函数。谢谢蒂姆^_^我不知道countBy函数。谢谢蒂姆^_^那是n^2复杂性,不是吗?那是n^2复杂性,不是吗?