代码之家  ›  专栏  ›  技术社区  ›  Jake

scala:OneSet.Diff(OtherSet)不工作

  •  -1
  • Jake  · 技术社区  · 7 年前

    我有一个函数可以查找要添加到cassandra表中的新列:

        val inputSet:Set[String] = inputColumns.map
        {
          cht => cht.stringLabel.toLowerCase()
        }.distinct.toSet
         logger.debug("\n\ninputSet\n"+inputSet.mkString(", "))
    
        val extantSet:Set[String] = extantColumns.map
        {
          e => e._1.toLowerCase()
        }.toSet
    
        logger.debug("\n\nextantSet\n"+inputSet.mkString(" * "))
        inputSet.diff(extantSet)
    

    我想要只在输入集中的值。然后我将在Cassandra表中创建列。

    返回集(即, inputSet.diff(extantSet) 但是,包含两个集合中的列。

    从我的日志文件:

    输入集

    事件,漏斗,重新评估,面对面,事故,创造…


    现存的

    事故*漏斗*V_重新评估*ADJ_亲自*事故* 创建…


    返回集:

    漏斗V_U重新评估ADJ_U亲自V_U解释V_U设计DMEPOS …

    最后扔哪个

    com.datastax.driver.core.exceptions.InvalidQueryException: Invalid column name adj_in-person because it conflicts with an existing column
    

    我做错了什么? 有什么能帮上忙的吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Raman Mishra    7 年前

    这就是我所累的。输出结果如下。

    object ABC extends App {
    
          val x = List("A","B","c","d","e","a","b").map(_.toLowerCase)
          val y = List("a","b","C").map(_.toLowerCase)
          println(s"${x diff y} List diff")
          println(s"${x.toSet diff y.toSet} Set diff")
        }
    

    输出:

    List(d, e, a, b) List diff
    Set(e, d) Set diff
    

    我认为你在寻找设定值的差异。

    正如你所看到的,当我们进行两个列表的比较时,我们得到的答案是 a, b 但在手术后,我们会去掉重复的部分,所以这对你也很有用。

    推荐文章