【问题标题】:Comparing [Ljava.lang.String against Array[String]比较 [Ljava.lang.String 与 Array[String]
【发布时间】:2015-08-17 23:26:09
【问题描述】:

我知道这似乎是一个非常简单的问题,但我是 Scala 新手,无法在线找到解决方案。

基本上我正在转换一个基于 AI 的程序,我的所有数据在 Mongo 中都是 JSON 格式。最后一点是运行模拟的函数。我遇到了将 [Ljava.lang.String 与基本数组 [String] 进行比较的问题。

//temporary way to store variable
var g = row.as[MongoDBObject]("country").as[BasicDBList]("league").toArray(new Array[String](row.as[MongoDBObject]("country").as[BasicDBList]("league").length))

if (g.contains(Array("primera","division")))
  //Do stuff

即使我这样做数组将返回 true,它也总是返回 false

     if (g.contains("primera") && g.contains("division"))

如何在不编写单独的方法来循环和检查的情况下比较这两者(并且效率极低)

我需要动态数组。 “primera”和“division”只是函数的占位符,用于检查输入的名为 League 的字符串数组。

//编辑 我与Array[String]("primera","division").exists(g.contains) 更接近了,但它匹配“primera”或“division”而不是两者。

API 是: http://mongodb.github.io/casbah/api/#com.mongodb.casbah.package

当我调用 g.getClass 时,它返回类 [Ljava.lang.String。所以我将它与 Array[String]

进行比较

【问题讨论】:

    标签: scala casbah


    【解决方案1】:

    想通了。我需要将两者都转换为 Set 并使用 subsetOf

    所以最后的答案是:

          if(Set("primera","division").subsetOf(g.toSet))
          //do Stuff
    

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多