标签: scala-collections

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

Scala for循环遍历两个列表

我有一个List[Message]和一个List[Author]具有相同数量的项目,并且应该被排序,以便在每个索引处,Message来自Author.

我也有一个类,我们将在这里调用SmartMessage,带有两个参数的构造函数:a Message和相应的Author.

我想要做的是创建一个List[SmartMessage],结合2个简单列表的数据.

额外问题:是否List保留了Scala中的插入顺序?只是为了确保我创建List[Message]List[Author]使用相同的顺序.

scala scala-collections

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

Scala集合标准实践

来自一个Java背景,我已经习惯了处理集合的常见做法:显然会有异常,但通常代码看起来像:

public class MyClass {
  private Set<String> mySet;

  public void init() {
    Set<String> s = new LinkedHashSet<String>();
    s.add("Hello");
    s.add("World"); 
    mySet = Collections.unmodifiableSet(s);
  }
}
Run Code Online (Sandbox Code Playgroud)

我不得不承认,我对Scala中的众多选项感到有些困惑.有:

  • scala.List(和Seq)
  • scala.collections.Set(和Map)
  • scala.collection.immutable.Set(而且Map,Stack不是List)
  • scala.collection.mutable.Set(而且Map,Buffer不是List)
  • scala.collection.jcl

所以问题!

  1. 为什么List并且Seq在包中定义scala而不是 scala.collection(尽管实现Seq是在集合子包​​中)?
  2. 初始化集合然后冻结它的标准机制是什么(在Java中是通过包装来实现的unmodifiable)?
  3. 为什么某些集合类型(例如MultiMap)仅定义为可变?(没有不可改变的MultiMap)?

我读过Daniel Spiewak 关于scala集合精彩系列 …

java scala scala-collections

31
推荐指数
2
解决办法
9447
查看次数

谷歌番石榴vs Scala收集框架比较

有很多共同的概念:

  • 不可变的集合,
  • 集合视图,
  • 严格/不严格的收藏,
  • 集合建设者

Guava和Scala Collection API中的相同模式.那么区别是什么呢?这两个库是否与模式一致?扩展的可行性是否良好?

所以我想听听那些使用它们的人对这些框架的比较.

java scala guava scala-collections

31
推荐指数
2
解决办法
5856
查看次数

更清洁的元组组

我有一系列键值对(String,Int),我想按键将它们分组为一系列值(即Seq[(String, Int)]) => Map[String, Iterable[Int]])).

显然,toMap这里没用,并将groupBy值保持为元组.我设法得到的最好的是:

val seq: Seq[( String, Int )]
// ...
seq.groupBy( _._1 ).mapValues( _.map( _._2 ) )
Run Code Online (Sandbox Code Playgroud)

这样做有更干净的方法吗?

scala scala-collections

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

哪个scala可变列表可以使用?

(把它作为这个问题的后续内容 - 没有Scala可变列表)

我想在scala中使用一个可变列表.我可以选择

哪个好,但是什么是"标准",推荐的,惯用的scala方式?我只想使用一个列表,我可以在后面添加东西.

编辑:

好的,进一步扩展.

我正在使用HashMap,其中"列表"(我的意思是一般意义上说)将是有价值的.然后,我正在读取文件中的内容,并且对于每一行,我想在散列映射中找到正确的列表并将值附加到列表中.

scala scala-collections

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

如何在列表中查找重复项?

我有一个未排序的整数列表,我想找到那些有重复的元素.

val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
Run Code Online (Sandbox Code Playgroud)

我可以使用dup.distinct找到集合的不同元素,所以我写了如下答案.

val dup = List(1,1,1,2,3,4,5,5,6,100,101,101,102)
val distinct = dup.distinct
val elementsWithCounts = distinct.map( (a:Int) => (a, dup.count( (b:Int) => a == b )) )
val duplicatesRemoved = elementsWithCounts.filter( (pair: Pair[Int,Int]) => { pair._2 <= 1 } )
val withDuplicates = elementsWithCounts.filter( (pair: Pair[Int,Int]) => { pair._2 > 1 } )
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来解决这个问题?

scala list scala-collections

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

从scala.collection.immutable.Iterable [String]中删除第一个和最后一个元素

我试图改变我从中获取价值的方式Form,但在某些地方停留

val os= for {
  m <- request.body.asFormUrlEncoded
  v <- m._2
} yield v
Run Code Online (Sandbox Code Playgroud)

osscala.collection.immutable.Iterable[String]当我打印控制台

os map println
Run Code Online (Sandbox Code Playgroud)

安慰

sedet impntc
sun
job
03AHJ_VutoHGVhGL70
Run Code Online (Sandbox Code Playgroud)

我想从中删除第一个和最后一个元素.

collections scala scala-collections

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

Scala 2.9并行集合如何在幕后工作?

Scala 2.9引入了并行集合.对于某些任务来说,它们是非常棒的工具.但是,它们如何在内部工作,我是否能够影响行为/配置?

他们使用什么方法来确定最佳线程数?如果我对结果不满意,是否有任何配置参数需要调整?

我不仅对实际创建了多少线程感兴趣,我还对实际工作如何在它们之间分配感兴趣.如何收集结果以及幕后有多少魔法.Scala是否会以某种方式测试集合是否足够大以便从并行处理中受益?

parallel-processing scala scala-collections

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

如何在scala中查找地图中的(键,值)对的数量?

我需要在我的Scala代码中找到Map中(键,值)对的数量.我可以遍历地图并得到答案,但我想知道是否有任何直接功能用于此目的.

collections dictionary scala scala-collections

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