gpt4 book ai didi

list - 如何在列表中查找重复项?

转载 作者:行者123 更新时间:2023-12-03 09:00:08 25 4
gpt4 key购买 nike

我有一个列表 未分类 整数,我想找到那些有重复的元素。

val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)

我可以用 dup.distinct 找到集合的不同元素,所以我写了我的答案如下。
val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
val distinct = dup.distinct
val elementsWithCounts = distinct.map( (a:Int) => (a, dup.count( (b:Int) => a == b )) )
val duplicatesRemoved = elementsWithCounts.filter( (pair: Pair[Int,Int]) => { pair._2 <= 1 } )
val withDuplicates = elementsWithCounts.filter( (pair: Pair[Int,Int]) => { pair._2 > 1 } )

有没有更简单的方法来解决这个问题?

最佳答案

尝试这个:

val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
dup.groupBy(identity).collect { case (x, List(_,_,_*)) => x }
groupBy将每个不同的整数与其出现的列表相关联。 collect基本上是 map其中不匹配的元素被忽略。匹配模式如下 case将匹配整数 x与符合模式 List(_,_,_*) 的列表相关联,一个包含至少两个元素的列表,每个元素都用下划线表示,因为我们实际上不需要存储这些值(并且这两个元素后面可以跟零个或多个元素: _* )。

你也可以这样做:
dup.groupBy(identity).collect { case (x,ys) if ys.lengthCompare(1) > 0 => x }

它比您提供的方法快得多,因为它不必重复传递数据。

关于list - 如何在列表中查找重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24729544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com