我有一个未排序的整数列表,我想找到重复的元素。
val ans2 = dup.groupBy(identity).map(t => (t._1, t._2.size))
我必须找到唯一元素的列表以及每个元素重复的次数。
我知道我可以通过以下代码找到它:
String
但是我无法在“|”上拆分上面的列表。我尝试转换为{{1}}然后使用拆分但我得到了以下结果:
→ 一世 小号 Ť ( 1 0 3 )
我不知道为什么我会得到这个结果。 你能帮忙吗?
答案 0 :(得分:2)
符号|是scala中的一个函数。您可以查看API here
|(x:Int):Int
返回此值与x的按位OR。
所以你没有List
,你有一个Integer
(103),这是操作|
所有假装列表中所有整数的结果。
你的代码很好,如果你想做一个正确的List
你应该用逗号分隔它的元素
val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
如果您希望在<{1}} {/ 1}}之前转换给定的String
,您可以执行以下操作:
List
答案 1 :(得分:0)
更简单,将重复列表转换为集合 - 集合是一种默认情况下不具有任何重复项的数据结构。
apt-get install nautilus
要对元素进行计数,只需在结果集上调用方法scala> val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
dup: List[Int] = List(1, 1, 1, 2, 3, 4, 5, 5, 6, 100, 101, 101, 102)
scala> val noDup = dup.toSet
res0: scala.collection.immutable.Set[Int] = Set(101, 5, 1, 6, 102, 2, 3, 4, 100)
:
size
答案 2 :(得分:0)
解决问题的另一种方法
“1 | 1 | 1 | 2 | 3 | 4 | 5 | 5 | 6 | 100 | 101 | 101 | 102”.split(“\ |”)。groupBy(x =&gt; x)。mapValues( _.size)
res0:scala.collection.immutable.Map [String,Int] = Map(100 - &gt; 1,4 - &gt; 1,5-&gt; 2,6-&gt; 1,1 - > 3, 102-&gt; 1,2-&gt; 1,101-> 2,3-> 1)