You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何找出列表重复元素?列表按|分割失败求助

解决Scala中列表元素分割与重复统计的问题

嘿,我来帮你理清这个问题的根源和解决办法:

为什么你分割后得到奇怪的结果?

你遇到的问题主要有两个原因:

  • 首先,你直接把List对象转成String后,Scala中List的默认字符串格式是List(1, 1, 1, 2,...),里面根本没有你以为的|分隔符,自然没法用|分割出正确的元素;
  • 其次,|是正则表达式里的特殊字符(表示“或”的逻辑),直接调用split("|")会把字符串的每个字符都拆分开,这就是你得到L i s t ( 1 0 3 )这类零散字符结果的原因。

正确的处理步骤

1. 先把|分隔的字符串转成整数列表

如果你的原始数据是一个用|分隔的字符串,先把它处理成合法的整数List:

// 假设你的原始字符串是这样的
val str = "1|1|1|2|3|4|5|5|6|100|101|101|102"
// 分割字符串(注意用\\|转义正则特殊字符),转成整数后再转成List
val dup = str.split("\\|").map(_.toInt).toList

2. 统计每个元素的重复次数

接下来就可以用你之前知道的方法来统计,还可以优化得更简洁一点:

// 你的原方法没问题,这里提供一个更高效的写法(避免创建中间List)
val ans2 = dup.groupBy(identity).view.mapValues(_.size).toMap

3. 筛选重复元素(可选)

如果只需要找出重复的元素(次数>1的),可以再加一步筛选:

val duplicates = ans2.filter(_._2 > 1)
// 结果会是:Map(1 -> 3, 5 -> 2, 101 -> 2)

内容的提问来源于stack exchange,提问作者Harshit Kakkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:49:49