还有其他问题,例如Scala:Scala集合中的Traversable和Iterable特性之间有什么区别?和我怎么会得到两个列表的平方在斯卡拉的总和?这部分地回答了这个问题.我觉得在一个地方覆盖所有这些问题是有道理的.
我有一个List[Message]和一个List[Author]具有相同数量的项目,并且应该被排序,以便在每个索引处,Message来自Author.
我也有一个类,我们将在这里调用SmartMessage,带有两个参数的构造函数:a Message和相应的Author.
我想要做的是创建一个List[SmartMessage],结合2个简单列表的数据.
额外问题:是否List保留了Scala中的插入顺序?只是为了确保我创建List[Message]和List[Author]使用相同的顺序.
来自一个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所以问题!
List并且Seq在包中定义scala而不是 scala.collection(尽管实现Seq是在集合子包中)?unmodifiable)?MultiMap)仅定义为可变?(没有不可改变的MultiMap)?有很多共同的概念:
Guava和Scala Collection API中的相同模式.那么区别是什么呢?这两个库是否与模式一致?扩展的可行性是否良好?
所以我想听听那些使用它们的人对这些框架的比较.
我有一系列键值对(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中使用一个可变列表.我可以选择
scala.collection.mutable.DoubleLinkedListscala.collection.mutable.LinkedListscala.collection.mutable.ListBufferscala.collection.mutable.MutableList 哪个好,但是什么是"标准",推荐的,惯用的scala方式?我只想使用一个列表,我可以在后面添加东西.
编辑:
好的,进一步扩展.
我正在使用HashMap,其中"列表"(我的意思是一般意义上说)将是有价值的.然后,我正在读取文件中的内容,并且对于每一行,我想在散列映射中找到正确的列表并将值附加到列表中.
我有一个未排序的整数列表,我想找到那些有重复的元素.
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)
有没有更简单的方法来解决这个问题?
val os= for {
m <- request.body.asFormUrlEncoded
v <- m._2
} yield v
Run Code Online (Sandbox Code Playgroud)
os是scala.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)
我想从中删除第一个和最后一个元素.
Scala 2.9引入了并行集合.对于某些任务来说,它们是非常棒的工具.但是,它们如何在内部工作,我是否能够影响行为/配置?
他们使用什么方法来确定最佳线程数?如果我对结果不满意,是否有任何配置参数需要调整?
我不仅对实际创建了多少线程感兴趣,我还对实际工作如何在它们之间分配感兴趣.如何收集结果以及幕后有多少魔法.Scala是否会以某种方式测试集合是否足够大以便从并行处理中受益?
我需要在我的Scala代码中找到Map中(键,值)对的数量.我可以遍历地图并得到答案,但我想知道是否有任何直接功能用于此目的.