标签: scala-collections

Scala集合中的可变与不可变

我是Scala的新手,我正在尝试理解集合层次结构.我看到有"可变"和"一成不变"的集合之间的区别,但我不明白这是什么,其实就是在执行层面,以及如何这涉及到valvar.有人能给我一些见解吗?此外,每个集合类都有"可变"版本和"不可变"版本,还是有些类只能是"可变"或"不可变"?

collections containers scala scala-collections

40
推荐指数
2
解决办法
1万
查看次数

Scala Map实现按插入顺序保留条目?

在Java中,我LinkedHashMap用于此目的.Java的文档LinkedHashMap很清楚,它具有"可预测的迭代顺序",我在Scala中需要相同的东西.

Scala有ListMapLinkedHashMap,但他们这样做究竟是什么文件很糟糕.

问题:Scala LinkedHashMapListMap实现是否用于此目的?如果没有,除了LinkedHashMap直接使用Java之外还有哪些其他选项?

scala scala-2.8 scala-collections ordered-map

39
推荐指数
3
解决办法
2万
查看次数

scala parallel collections of parallelism

在LINQ的scala并行集合中是否有任何等价物来withDegreeOfParallelism设置将运行查询的线程数?我想并行运行一个需要运行一定数量线程的操作.

scala scala-collections

39
推荐指数
2
解决办法
7909
查看次数

为什么在 Scala 中压缩比 zip 快?

我编写了一些 Scala 代码来对集合执行元素操作。在这里,我定义了两个执行相同任务的方法。一种方法使用zip,另一种使用zipped.

def ES (arr :Array[Double], arr1 :Array[Double]) :Array[Double] = arr.zip(arr1).map(x => x._1 + x._2)

def ES1(arr :Array[Double], arr1 :Array[Double]) :Array[Double] = (arr,arr1).zipped.map((x,y) => x + y)
Run Code Online (Sandbox Code Playgroud)

为了在速度方面比较这两种方法,我编写了以下代码:

def fun (arr : Array[Double] , arr1 : Array[Double] , f :(Array[Double],Array[Double]) => Array[Double] , itr : Int) ={
  val t0 = System.nanoTime()
  for (i <- 1 to itr) {
       f(arr,arr1)
       }
  val t1 = System.nanoTime()
  println("Total Time Consumed:" + ((t1 - t0).toDouble / 1000000000).toDouble + "Seconds") …
Run Code Online (Sandbox Code Playgroud)

performance scala scala-collections jmh elementwise-operations

39
推荐指数
4
解决办法
4876
查看次数

Scala将Iterable或collection.Seq转换为collection.immutable.Seq

看来toSeqScala集合中的方法返回一个scala.collection.Seq,我也可以返回一个Traversable或者Iterable需要将其转换为a scala.collection.immutable.Seq.

是否有捷径可寻?

谢谢理查德

scala scala-collections

38
推荐指数
1
解决办法
3万
查看次数

如何使用A值作为地图中的关键字将Seq [A]转换为Map [Int,A]?

我有一个Seq类的对象,如下所示:

class A (val key: Int, ...)
Run Code Online (Sandbox Code Playgroud)

现在我想将此转换Seq为a Map,使用key每个对象的值作为键,并将对象本身作为值.所以:

val seq: Seq[A] = ...
val map: Map[Int, A] = ... // How to convert seq to map?
Run Code Online (Sandbox Code Playgroud)

如何在Scala 2.8中高效且优雅地完成这项工作?

scala scala-2.8 scala-collections

37
推荐指数
3
解决办法
4万
查看次数

Scala:如何合并地图集合

我有一个Map [String,Double]列表,我想将它们的内容合并到一个Map [String,Double]中.我该如何以惯用的方式做到这一点?我想我应该可以用折叠来做到这一点.就像是:

val newMap = Map[String, Double]() /: listOfMaps { (accumulator, m) => ... }
Run Code Online (Sandbox Code Playgroud)

此外,我想以通用的方式处理关键冲突.也就是说,如果我向已经存在的地图添加一个键,我应该能够指定一个返回Double的函数(在这种情况下)并获取该键的现有值,加上我试图添加的值.如果地图中尚不存在该关键字,则只需添加该关键字并使其值不变.

在我的具体情况下,我想构建一个Map [String,Double],这样如果地图已经包含一个键,那么Double将被添加到现有的地图值中.

我在我的特定代码中使用可变映射,但如果可能的话,我对更通用的解决方案感兴趣.

scala map folding scala-collections

34
推荐指数
4
解决办法
3万
查看次数

如何按其值对scala.collection.Map [java.lang.String,Int]进行排序?

你如何按其值(在Int上)对scala.collection.Map [java.lang.String,Int]进行排序?什么是简短而优雅的方式呢?

sorting scala scala-collections

33
推荐指数
1
解决办法
2万
查看次数

Scala foldLeft在地图上

你如何使用Map.foldLeft?根据文档,它看起来像

foldLeft [B] (z: B)(op: (B, (A, B)) ? B) : B
Run Code Online (Sandbox Code Playgroud)

但我遇到了困难:

Map("first"->1,"second"->2).foldLeft(0)((a,(k,v)) => a+v )
Run Code Online (Sandbox Code Playgroud)

错误:不是合法的形式参数

错误指向k前面的空心括号.

scala scala-2.8 scala-collections

33
推荐指数
4
解决办法
2万
查看次数

MutableList和ListBuffer之间的区别

Scala MutableListListBuffer类之间有什么区别scala.collection.mutable?你什么时候使用一个与另一个?

我的用例是一个线性序列,我可以有效地删除第一个元素,prepend和append.什么是最好的结构?

scala scala-collections

33
推荐指数
3
解决办法
1万
查看次数