我有一个List的Map,每个含有三个键/值对:
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中以优雅的方式完成此操作?
这是代码:
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?
非常感谢
对于关于元组对称相等的这个函数,
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并利用模式匹配?
您好我的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中找到它?
在字符串中,如何替换以给定模式开头的单词?
例如更换每一个开头的字"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)
除了标点符号之外,文本还可以包括多个连续的空格.
例如,设置第一项是集合的元组集合
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.
注意每组中的值不一定是连续的.
注意集不重叠(任何集合交集都证明为空).
我正在尝试将数据从一个提取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编程语言,并对此感到困惑:
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 的新手,如果有一个选项可以重载Int加号,我就在徘徊。例如,假设我想1+2返回1*2。我可以做这样的事情吗?
如果我(String,Double)在Scala中有一个元组列表(即List[(String,Double)]),我如何获得具有最大值的元组Double?
scala ×9
tuples ×2
apache-spark ×1
collections ×1
equality ×1
haskell ×1
list ×1
map ×1
string ×1