小编elm*_*elm的帖子

从Scala中的地图列表中删除元素

我有一个ListMap,每个含有三个键/值对:

List(
  Map("id" -> 1, "key" -> 11, "value" -> 111), 
  Map("id" -> 2, "key" -> 22, "value" -> 222), 
  Map("id" -> 3, "key" -> 33, "value" -> 333), 
  Map("id" -> 4, "key" -> 44, "value" -> 444))
Run Code Online (Sandbox Code Playgroud)

我想将其转换为JSON,但在此之前,我需要key从每个地图中删除它的值并将value密钥重命名为title.如何在Scala中以优雅的方式完成此操作?

collections scala scala-collections

1
推荐指数
1
解决办法
509
查看次数

斯卡拉:为什么AnyVal出现在这里?

这是代码:

val m=scala.collection.mutable.HashMap[String, Long]()
var i=m.get("foo")
i=i+i
Run Code Online (Sandbox Code Playgroud)

这是错误:

Error:(28, 9) type mismatch;
 found   : AnyVal
 required: String
    i=i+i
        ^
Run Code Online (Sandbox Code Playgroud)

为什么i突然变成AnyVal?为什么String这里需要我的地图中的值Long

非常感谢

scala map scala-collections

1
推荐指数
1
解决办法
973
查看次数

Haskell中元组上的模式匹配相等

对于关于元组对称相等的这个函数,

symEq :: Eq a => (a,a) -> (a,a) -> Bool
symEq (x,y) (u,v) = (x,y) == (u,v) || (x,y) == (v,u)
Run Code Online (Sandbox Code Playgroud)

我想用模式匹配重写它,如下所示,

symEq' :: Eq a => (a,a) -> (a,a) -> Bool
symEq' (x,y) (x,y) = True
symEq' (x,y) (y,x) = True
symEq' _ _ = False
Run Code Online (Sandbox Code Playgroud)

后者因为x和的冲突定义错误而失败y.如何重写symEq并利用模式匹配?

haskell tuples equality pattern-matching

1
推荐指数
1
解决办法
900
查看次数

列表的Scala列表字符串查找不同的元素

您好我的scala列表包含以下元素

val myList = List(List("A","B","C","E"),List("A","A1","B1","C","E"),List("P","E","L","A"))
Run Code Online (Sandbox Code Playgroud)

现在我想找出上面列表中的不同元素,所以我的最终列表将是

val finalList = List ("A","E")
Run Code Online (Sandbox Code Playgroud)

如何在scala中找到它?

scala scala-collections

1
推荐指数
1
解决办法
442
查看次数

Scala字符串替换符合模式的整个单词

在字符串中,如何替换以给定模式开头的单词?

例如更换每一个开头的字"th",用"123",

val in = "this is the example, that we think of"
val out = "123 is 123 example, 123 we 123 of"
Run Code Online (Sandbox Code Playgroud)

即如何在保留句子结构的同时替换整个单词(例如考虑逗号).这不行,我们想念逗号,

in.split("\\W+").map(w => if (w.startsWith("th")) "123" else w).mkString(" ")
res: String = 123 is 123 example 123 we 123 of
Run Code Online (Sandbox Code Playgroud)

除了标点符号之外,文本还可以包括多个连续的空格.

string scala scala-collections

1
推荐指数
1
解决办法
1548
查看次数

Scala高效集包含检测

例如,设置第一项是集合的元组集合

val xs = Seq(
  ((1 to 5).toSet ++ Set(9), "apple"),
  ((15 to 17).toSet,         "pear"),
  ((21 to 30).toSet,         "grape"))
Run Code Online (Sandbox Code Playgroud)

给定一个值x:Int,如何有效地识别第二个项目?(真实用例包括数千套.)

对于val x = 22其结果将是Some("grape"),对于val x = 19结果将是None.

注意每组中的值不一定是连续的.

注意集不重叠(任何集合交集都证明为空).

scala scala-collections

1
推荐指数
1
解决办法
114
查看次数

_.split("")scala RDD中的更多字段

我正在尝试将数据从一个提取RDD[string]到另一个RDD[string]

RDD包含与此类似的数据:

17.808  15.749  6.649   -0.548  15.9994
Run Code Online (Sandbox Code Playgroud)

我需要将每行的第4和第5个字段相乘并将它们存储为不同的字段RDD[string].

我可以使用以下代码来拉出一个字段

ansRDD = rawRDD(._split(" ")(4)).(_.toFloat)
Run Code Online (Sandbox Code Playgroud)

rawRDD 包含字符串.

但是我需要把两个字段都拉成一个RDD

-0.548  15.9994
Run Code Online (Sandbox Code Playgroud)

这样我就可以做到

answer = ansRDD.foreach(case(a,b) => a*b)
Run Code Online (Sandbox Code Playgroud)

scala apache-spark

1
推荐指数
1
解决办法
748
查看次数

这两个在印刷套装中的scala有什么不同

我正在学习Scala编程语言,并对此感到困惑:

var set = Set("hello", "world")

set += "Tom"
println(set)

println(set += "Tom")
Run Code Online (Sandbox Code Playgroud)

第一次打印将输出

Set(hello, world, Tom)
Run Code Online (Sandbox Code Playgroud)

但第二个将输出

()
Run Code Online (Sandbox Code Playgroud)

那么,为什么他们不同,我想println(set += "Tom")先做,set += "Tom"然后打印出结果呢?不是吗?

scala scala-collections

1
推荐指数
1
解决办法
48
查看次数

Scala 运算符重载 Int

我是 Scala 的新手,如果有一个选项可以重载Int加号,我就在徘徊。例如,假设我想1+2返回1*2。我可以做这样的事情吗?

scala

1
推荐指数
1
解决办法
577
查看次数

Scala:从元组列表中获取最大数量

如果我(String,Double)在Scala中有一个元组列表(即List[(String,Double)]),我如何获得具有最大值的元组Double

scala tuples list

1
推荐指数
1
解决办法
535
查看次数