问题标签 [scala-collections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
725 浏览

scala - 我可以用具有很好变体类型的 TraversableLike.map 的类似物“拉皮条我的图书馆”吗?

假设我想向mapScala添加类似的功能List,类似于list mapmap f,它将函数应用于两次f的每个元素。list(一个更严重的例子可能是实现一个并行或分布式地图,但我不想被那个方向的细节分散注意力。)

我的第一种方法是

这现在很好用

当然,它只适用于Lists,我们没有理由不希望它适用于任何东西Traverseable,具有map函数,例如Sets 或Streams。所以第二次尝试看起来像

但是现在,当然,结果不能分配给 a List[A]

有没有中间立场?我可以编写一个隐式转换,将方法添加到 Traversable 的所有子类,并成功返回该类型的对象吗?

(我猜这涉及理解可怕的CanBuildFrom特征,甚至可能breakout!)

0 投票
3 回答
613 浏览

scala - Scala 集合:完全不可预测的行为

对 Scala 2.8 的收集行为感到非常沮丧。这就是问题所在:我正在创建一个数独板。我正在标记从 A1 到 I9 的单元格(字母是行,数字是列)。我想获取板上的单元列表,即 9 行、夜间列和夜间象限。

这是我的 scala 类:

请参阅代码中的注释。具体来说,为什么相同的代码不会在 unitList 中编译,但在 run() 中编译并运行良好?

另外,当我观察 run 方法的输出时,yield 关键字返回的集合似乎在 Vector 和 List 之间随机切换:

我完全迷失在这里。

0 投票
5 回答
2900 浏览

scala - 在 Scala 中交换集合元素的好方法是什么?

在我的一个项目中,一个常见的用例不断出现。在某些时候,我有某种排序的集合(List、Seq 等...无关紧要)和这个集合的一个元素。我想要做的是将给定元素与其后一个元素(如果该元素存在)或有时与前一个元素交换。

我很清楚使用过程编程技术实现这一目标的方法。我的问题是通过函数式编程(在 Scala 中)解决问题的好方法是什么?


谢谢大家的答案。我接受了我自己最了解的那个。由于我(还)不是函数式程序员,所以我很难决定哪个答案是真正最好的。在我看来,它们都非常好。

0 投票
4 回答
7069 浏览

scala - 什么是集合视图,您想在什么时候使用它们?

在 Scala 中,您可以为许多(所有?)类型的集合创建视图。

究竟什么是视图,视图对哪些目的有用?

0 投票
2 回答
3209 浏览

scala - Scala 不可变多映射

在 Scala 中,我希望能够编写

底层的 Map[Owner,Set[Pet]] 应该同时具有 Map 和 Set 不可变。这是带有伴生对象的 ImmutibleMultiMap 的初稿:

你能优雅地解决注释行吗?地图和集合都应该成为不可变的。

谢谢!

0 投票
3 回答
1571 浏览

scala - Seq 用于 Scala 中的快速随机访问和快速增长

对于以下场景,最好的 Scala 集合(在 2.8+ 中)是可变的还是不可变的:

  • 按顺序排列,所以我可以按位置访问项目(a Seq)
  • 需要频繁插入项目,所以集合必须能够增长而不会受到太多惩罚
  • 随机访问,经常需要在集合中的任意索引处删除和插入项目

目前我似乎使用可变 ArrayBuffer 获得了良好的性能,但还有什么更好的吗?是否有一个不变的替代方案也可以?提前致谢。

0 投票
5 回答
10639 浏览

scala - 在 Scala 中使用什么类型来存储内存中的可变数据表?

每次调用函数时,如果尚未记住给定参数值集的结果,我想将结果放入内存表中。一列用于存储结果,其他列用于存储参数值。

我如何最好地实现这一点?参数有多种类型,包括一些枚举。

在 C# 中,我通常使用 DataTable。Scala中是否有等价物?

0 投票
3 回答
7690 浏览

java - 在 Java 中迭代 Scala 集合

如何在 Java 中迭代 Scala 集合?

0 投票
4 回答
3224 浏览

scala - Scala 集合过滤器按类型

我是 scala 的新手,遇到了以下问题:

我想获取仅包含特定类型元素的现有集合的子集合。以下作品:

但是,当我尝试使用“onlyInstancesOf[Type]”方法扩展集合类时,这不起作用。首先我的实现:

所以当我使用这个扩展并执行时:

我收到一个错误,.size 返回 4 而不是 2。此外,我检查过,结果实际上包含 C1 和 C2,尽管它不应该。

当我做:

我得到了例外:

所以很明显,结果集仍然包含应该被过滤掉的元素。

我不明白为什么会发生这种情况,有人可以解释一下吗?

编辑:Scala:Scala 代码运行器版本 2.8.0.final

0 投票
3 回答
3583 浏览

scala - 反转 Map 的最简洁的 Scala 方法是什么?

反转 Map 的最简洁的 Scala 方法是什么?Map 可能包含非唯一值。

编辑:

Map[A, B]应该给的反转 Map[B, Set[A]](或MultiMap,那会更好)。