加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

找到重复的scala时拆分列表

发布时间:2020-12-16 18:08:55 所属栏目:安全 来源:网络整理
导读:我在 Scala中有一个元素列表,我正在寻找一种在找到重复项时拆分列表的方法. 例如:List(x,y,z,e,r,g,a)将被转换为List(List(x,r),List(y,a)) 或列表(x,x,z)到列表(x,z),列表(x,z) 和列表(x,x)到列表(x,列表(y,x) 是否有一种比分别迭代和检查每个元素更有效的
我在 Scala中有一个元素列表,我正在寻找一种在找到重复项时拆分列表的方法.

例如:List(x,y,z,e,r,g,a)将被转换为List(List(x,r),List(y,a))
或列表(x,x,z)到列表(x,z),列表(x,z)
和列表(x,x)到列表(x,列表(y,x)

是否有一种比分别迭代和检查每个元素更有效的方法?

解决方法

使用O(n)附加内存快速而脏的O(n):

import scala.collection.mutable.HashSet
import scala.collection.mutable.ListBuffer

val list = List("x","y","z","e","r","g","a","x","m","z")

var result = new ListBuffer[ListBuffer[String]]()
var partition = new ListBuffer[String]()

list.foreach { i => 
    if (partition.contains(i)) {
        result += partition
        partition = new ListBuffer[String]()
    }
    partition += i
}

if (partition.nonEmpty) {
    result += partition
}
result

ListBuffer(ListBuffer(x,ListBuffer(y,a,m,z))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读