scala-collections相关内容
我可以使用 for 循环很容易、干净地做到这一点.例如,如果我想从每个元素遍历 Seq 回到自身,我会执行以下操作: val seq = Seq(1,2,3,4,5)对于 (i
..
编辑:根据原始答案重写此问题 scala.collection.immutable.Set 类的类型参数不是协变的.为什么是这样? 导入 scala.collection.immutable._def foo(s: Set[CharSequence]): Unit = {println(s)}def bar(): 单位 = {val s: Set[String] = Set("Hello"
..
我在 Scala 中有一个 Set(我可以在创建 Set 时选择任何实现.我正在使用的 Java 库需要一个 java.util.Set[String]. 以下是在 Scala 中执行此操作的正确方法吗(使用 scala.collection.jcl.HashSet#underlying): 导入 com.javalibrary.Animalsvar classes = new scala
..
我想在我的 Iterables 上调用“包含":-) 解决方案 Iterable之所以没有contains方法是因为它的定义方式可以直接方差的后果.基本上,有两种类型签名对它有意义: def contains(v: Any): Booleandef contains(v: A): 布尔值 第二个定义提高了类型安全性.但是,集合的类型参数A出现在逆变位置,这迫使集合保持不变.可以这样定义
..
从 Set[K] 创建 Map[K,V] 和从 K 到 的函数的最佳方法是什么?代码>V? 例如,假设我有 scala>val s = Set(2, 3, 5)s: scala.collection.immutable.Set[Int] = Set(2, 3, 5) 和 scala>def func(i: Int) = "" + i + ifunc: (i: Int)java.lang
..
是否有可能使用 Scala 的并行集合来并行化 Iterator 事先完全评估它? 这里我说的是在 Iterator 上并行化函数转换,即 map 和 flatMap.我认为这需要预先评估 Iterator 的一些元素,然后计算更多,一旦通过 next 消耗了一些元素. 我能找到的所有内容都需要将迭代器最多转换为 Iterable 或 Stream.当我调用 .par 时,Stream
..
我对 Scala 相当陌生,正在尝试了解集合层次结构.我看到“可变"和“不可变"集合之间存在区别,但我不明白这在实现级别实际上意味着什么以及这与 val 和 var.谁能给我一些这方面的见解?此外,是否每个集合类都有一个“可变"版本和一个“不可变"版本,或者是否有一些类只能是“可变"或“不可变"? 解决方案 可变意味着您可以就地更改集合.所以,如果你有一个集合 c 并且你附加了一个带有 +
..
我想过滤一个List,如果字符串包含.jpg、.jpeg或.png: scala>var list = List[String]("a1.png","a2.amr","a3.png","a4.jpg","a5.jpeg","a6.mp4","a7.amr","a9.mov","a10.wmv")list: List[String] = List(a1.png, a2.amr, a3.png, a
..
我有一个 java 映射:java.util.Map>我想将其转换为 Scala 地图:Map[SomeObject, Set[OtherObject]] 我用过 mapAsScalaMap 但结果不是我想要的,结果是:Map[SomeObject, java.util.Collection[OtherObject]].如何修复它以将集合转换为集合? 注意:实际上我最初的问题是将谷
..
如果我有一个 T 类型的集合 c 并且在 T 上有一个属性 p(输入 P,比如说),做一个 map-by-extracting-key 的最佳方法是什么? val c: 集合[T]val m: 地图[P, T] 一种方法如下: m = new HashMap[P, T]c foreach { t =>m 添加 (t.getP, t) } 但现在我需要一个可变地图.有没有更好的方法来做到这一
..
关于堆栈溢出问题Scala 等效于 new HashSet(Collection) ,我该如何转换将 Java 集合(例如 java.util.List)转换为 Scala 集合 List? 我实际上是在尝试将 Java API 调用转换为 Spring 的 SimpleJdbcTemplate,它返回一个 java.util.List 到一个 Scala 不可变的 HashSet.例如:
..
每次调用函数时,如果给定参数值集的结果尚未记忆,我想将结果放入内存表中.一列用于存储结果,其他列用于存储参数值. 我该如何最好地实现这一点?参数有多种类型,包括一些枚举. 在 C# 中,我通常使用 DataTable.Scala 中是否有等价物? 解决方案 你可以使用 mutable.Map[TupleN[A1, A2, ..., AN], R] ,或者如果内存是一个问题,一个
..
在之后应用 map、flatmap 等函数时,使用 withFilter 而不是 filter 总是更高效吗? 为什么只支持 map、flatmap 和 foreach?(预期的功能,如 forall/exists 以及) 解决方案 来自 Scala 文档: 注意:c filter p 和 c withFilter p 的区别在于前者创建一个新的集合,而后者只限制域后续的map
..
我应该什么时候使用reduceLeft、reduceRight、foldLeft、foldRight、scanLeft> 还是 scanRight? 我想对它们的差异有一个直观的/概述 - 可能是一些简单的例子. 解决方案 一般来说,所有 6 折函数都将二元运算符应用于集合的每个元素.每个步骤的结果传递到下一步(作为二元运算符的两个参数之一的输入).这样我们就可以累积一个结果.
..
我正在使用我的 Java 代码中的一些 Scala 库.我在收藏方面有问题.我需要将 scala.collection.immutable.Map 作为方法的参数传递.我可以从我的 Java 代码转换或构建 immutable.Map 但我不知道如何去做.建议? 解决方案 在 Java 代码中使用 JavaConverters 是完全可能的——只需要跳过几个额外的环节: import j
..
在scala.collection,有两个非常相似的对象 JavaConversions 和 JavaConverters. 这两个对象有什么区别? 为什么它们都存在? 我想在什么时候使用一个和另一个? 解决方案 EDIT: Java Conversions 在 Scala 2.13.0 中得到了 @deprecated.请改用 scala.jdk.CollectionConve
..
编辑:根据原始答案重写此问题 scala.collection.immutable.Set 类的类型参数不是协变的.为什么是这样? import scala.collection.immutable._def foo(s: Set[CharSequence]): Unit = {打印}def bar(): 单位 = {val s: Set[String] = Set("Hello", "W
..
让我们考虑一个简单的映射示例: val a = Array("一", "二", "三")val b = a.map(s => myFn(s)) 我需要在这里使用的不是 myFn(s: String): String,而是 myFn(s: String, n: Int): String,其中 n 将是 a 中 s 的索引.在这种特殊情况下,myFn 期望第二个参数对于 s == "One" 为
..
在什么情况下我应该使用 Array(Buffer) 和 List(Buffer).我所知道的唯一一个区别是数组是非变量的,而列表是协变量的.但是性能和其他一些特性呢? 解决方案 Immutable Structures Scala List 是一个不可变的递归数据结构,它是 Scala 中的一个基本结构,您应该(可能)使用它比 Array (这实际上是可变 - Array 的不可变模
..
我有一个名为 DF1 的数据框,如下所示. DF1: srcColumnZ|srcCoulmnY|srcCoulmnR|+---------+----------+----------+|约翰 |非高频 |纽约 ||Steav |非高频 |孟买 ||Ram |HF |波士顿 | 还有一个映射列表,其中包含源到目标列的映射,如下所示. List(Map(targetColumn -> c
..