Groovy 删除列表中所有重复的整数
给定列表[1,2,2,3,5,5,6] 我想完全删除重复的值,并获得:[1,3,6] 我正在寻找一个简单的解决方案,如果可能的话,它的复杂度和groovy函数都小于n^2 我正在使用的当前代码: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
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复杂性,不是吗?