问题标签 [listbuffer]

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 回答
5708 浏览

scala - 创建空 ListBuffer 的最有效方法是什么?

创建空 ListBuffer 的最有效方法是什么?

  1. val l1 = new mutable.ListBuffer[String]
  2. val l2 = mutable.ListBuffer[String] ()
  3. val l3 = mutable.ListBuffer.empty[String]

有什么好处和坏处的区别吗?

0 投票
2 回答
6979 浏览

scala - scala 移除(就地)ListBuffer 中满足条件的所有元素

我有一个 ListBuffer。我想删除所有满足特定条件的元素。

我可以遍历它并删除每个元素。但是 Scala 对改变你正在迭代的列表有什么看法?它会起作用,还是会删除错误的元素/不返回所有元素?(对 REPL 的快速尝试表明是的,它会搞砸的)

我可以反复调用 find ,然后删除找到的元素,直到找不到更多,但这听起来效率低下。

.filter 将返回一个没有元素的新 ListBuffer ,但我想就地执行它。

这个

看起来很有希望,但我不太明白如何在这里使用它

我该怎么做?

0 投票
2 回答
786 浏览

scala - 为什么使用 Stream/lazy val 实现比 ListBuffer 更快

我使用下面的 Stream 和惰性 val 编写了惰性筛算法的以下实现:

以及使用(可变)ListBuffer的以下实现:

当我做 primes().takeWhile(_ < 1000000).size 时,第一个实现比第二个快 3 倍。对此有何解释?

我编辑了第二个版本:它应该是 sieve(3, ListBuffer(3)) 而不是 sieve(3, ListBuffer()) 。

0 投票
4 回答
5688 浏览

scala - Scala:HashMap 可以为不同的键使用不同的数据类型吗?

我对使用 Scala 编程完全陌生,但遇到以下问题:

我需要一个可以包含许多数据类型(Int、String 等)的 HashMap。在 C++ 中,我会使用 BOOST 的 MultiMap。我听说在 Scala 中有一个 MultiMap trait 可用。基本上我想要的是以下内容:

ListBuffer 元素的具体数据类型将在运行时确定。当我在控制台中测试此实现时,以下工作:

所以基本上它可以工作。我的第一个问题是,是否有可能在不使用 ListBuffer 作为间接层的情况下在 Scala 中实现相同的行为。

例如,获取具有以下内容的 Map: Map((String, 1),(String, "String value"), ...)

当我现在尝试使用上面的 ListBuffer-Implementation 时,我收到以下类型不匹配错误:

我基本上是在尝试执行以下操作:

我使用迭代器来迭代地图的键:

setValue 返回 Int 并且是一个必须对 ListBuffers 最后一个元素做某事的方法。

有谁知道如何解决上述类型不匹配?

谢谢你的帮助!

问候

0 投票
1 回答
360 浏览

scala - 为什么“toSet”方法会混淆 ListBuffer 中元素的顺序?

在scala中,为什么toSet()方法会混淆集合中元素的顺序(ListBuffer)?

我可以使用哪个集合来确保每个元素的唯一性并保持其原始顺序?

0 投票
1 回答
2164 浏览

scala - 将对象附加到 Scala 中的 ListBuffer 的问题

我在将对象附加到 scala.collection.mutable.ListBuffer 时遇到问题。我熟悉相应的 API,并且知道通常您使用 += 或 ++= 方法来添加对象或对象序列。

我正在实现一个支持网络的纸牌游戏,并且有一个简单的问题,就是将一些选定的牌添加到手牌列表中。在下面的代码中,我将获取对手牌列表(ListBuffer)的引用,打印 ListBuffer 的大小,将所选卡片添加到其中并再次打印大小。

正如人们所期望的那样,手牌的大小会随着所选卡片的大小而增长。但是输出是(格式化的):

所以元素没有被附加。

ClientCard 始终是“真实卡”的代表,仅包含抽卡所需的信息。

在 Card 类中创建了一个 ClientCard:

还有创建 ListBuffer 的 ClientPlayer(“真实玩家”的代表):

有谁知道这里出了什么问题?或者更笼统地说:有哪些情况会阻止将对象成功附加到 ListBuffer?

编辑:有些事情我忘了提,似乎是什么导致了这种奇怪的行为。创建handCards ListBuffer 后,它通过网络发送,因此再次被序列化和反序列化。

在 Rex Kerr 发表评论后,我尝试为 ClientPlayer 创建一个深拷贝方法,并在收到每个 ClientPlayer 后立即复制它。这解决了问题。有人对这种行为有解释吗?

0 投票
1 回答
19750 浏览

list - 如何将 List 转换为 ListBuffer?

有没有办法有效地做到这一点,也许是通过 toBuffer 或 to 方法?我真正的问题是我正在从解析器中构建一个列表,如下所示:

但是在构建它之后,我希望它成为一个缓冲区 - 我只是不确定如何直接从解析器构建一个缓冲区。

0 投票
1 回答
1699 浏览

scala - Scala prepend +: op 不修改 ListBuffer

我在 listbuffer 类型上使用 prepend 方法并观察到一些奇怪的行为。前置操作返回一个可接受的新列表。但它不应该也修改 ListBuffer 吗?前置后,我仍然看到 ListBuffer 的长度没有改变。我在这里错过了什么吗?

0 投票
1 回答
121 浏览

scala - Scala:具有相同类的对象具有不同的类型?

在 scala 中定义一个类后,我创建的对象似乎是不同的类型。尝试创建对象的 ListBuffer。在 scala 命令行中尝试。有人可以解释一下吗?

在下面的示例中,我创建了一个class z. 尝试将对象 p 和 q 添加到ListBuffer

0 投票
6 回答
2292 浏览

list - 用绝对值更新列表的值

Scala的新手。

我现在正试图让这段代码工作几个小时。它旨在用整数的绝对值更新 List[Int](整数列表)。花了很长时间才弄清楚 List 是不可变的,所以发现 ListBuffer 可以成为救星,但最终在将它返回到 List 表单时我猜会遇到一些问题。

这给出了这个错误:

不明白这里有什么问题。