【问题标题】:Scala how to remove item while matching other list itmeScala如何在匹配另一个列表项时删除项目
【发布时间】:2015-02-23 02:00:59
【问题描述】:

我有以下课程的 2 个列表

  case class User(var userId: Int =0,
                var userName: String ="",
                var email: String="",
                var password: String ="") {
  def this() = this(0, "", "", "")
}

用户类的全局列表。

用户类的localList。

我想从 globalList 中删除/过滤所有与 localList 中的 userId 相同的项目。

我尝试了几个没有成功的 api,例如 filterNot、filter、drop、dropWhile。请告诉我如何做到这一点。

【问题讨论】:

    标签: list scala filter


    【解决方案1】:

    diff 运算符“计算此列表与另一个序列之间的多集差异”。

    scala> val global = List(0,1,2,3,4,5)
    global: List[Int] = List(0, 1, 2, 3, 4, 5)
    
    scala> val local = List(1,2,3)
    local: List[Int] = List(1, 2, 3)
    
    scala> global.diff(local)
    res9: List[Int] = List(0, 4, 5)
    

    【讨论】:

      【解决方案2】:

      您可以尝试以下方法:

      val userIdSet = localList.map(_.userId).toSet
      val filteredList = globalList.filterNot(u => userIdSet.contains(u.userId))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-14
        • 1970-01-01
        • 2018-07-04
        • 2017-05-20
        • 2021-10-20
        • 1970-01-01
        • 2021-09-12
        • 1970-01-01
        相关资源
        最近更新 更多