标签: listbuffer

如何将List转换为ListBuffer?

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

lazy val nodes: Parser[List[Node]] = phrase(( nodeA | nodeB | nodeC).*)
Run Code Online (Sandbox Code Playgroud)

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

scala list listbuffer

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

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

我有一个ListBuffer.我想删除所有符合特定条件的元素.

我可以迭代它并删除每个元素.但是,Scala如何改变你正在迭代的列表呢?它会工作,还是会删除错误的元素/不返回所有元素?(使用REPL的快速尝试表明是的,它会搞砸)

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

.filter将返回一个没有元素的新ListBuffer,但我想在适当的位置进行.

这个

def --= (xs: TraversableOnce[A]) : ListBuffer.this.type
Removes all elements produced by an iterator from this list buffer.
Run Code Online (Sandbox Code Playgroud)

看起来很有希望,但我不知道如何在这里使用它

我该怎么做?

scala scala-2.8 listbuffer

15
推荐指数
2
解决办法
5722
查看次数

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

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

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

有什么优点和缺点有区别吗?

scala listbuffer

8
推荐指数
2
解决办法
4255
查看次数

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

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

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

// get the references and ensure that it are rally ListBuffers / Lists
val handCards: mutable.ListBuffer[ClientCard] = playerPanel.player.handCards
val chosenCards: List[ClientCard] = _chosenCards

// print the number of elements per list
println("number of hand cards: " + handCards.size)
println("number of chosen cards: " + chosenCards.size)

// append the chosen cards to the hand cards
println("append operation: " + handCards + " ++= " + chosenCards)
handCards ++= chosenCards

// print …
Run Code Online (Sandbox Code Playgroud)

collections scala append listbuffer

4
推荐指数
1
解决办法
1570
查看次数

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

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

def primes(): Stream[Int] = {
   lazy val ps = 2 #:: sieve(3)
   def sieve(p: Int): Stream[Int] = {
       p #:: sieve(
            Stream.from(p + 2, 2).
             find(i=> ps.takeWhile(j => j * j <= i).
                     forall(i % _ > 0)).get)
  }
  ps
}
Run Code Online (Sandbox Code Playgroud)

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

import scala.collection.mutable.ListBuffer
def primes(): Stream[Int] = {
    def sieve(p: Int, ps: ListBuffer[Int]): Stream[Int] = {
        p #:: { val nextprime =
            Stream.from(p + 2, 2).
            find(i=> ps.takeWhile(j => j * j <= i).
                 forall(i % _ …
Run Code Online (Sandbox Code Playgroud)

scala stream listbuffer

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

为什么'toSet'方法会混淆ListBuffer中元素的排序?

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

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

collections scala set listbuffer

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

在java中循环遍历scala ListBuffer

如果可能,我将如何从java中循环ListBuffer.ListBuffer的初始化(在scala中)

var newModVersions: ListBuffer[NewModVersionEntry] = new ListBuffer[NewModVersionEntry]()
Run Code Online (Sandbox Code Playgroud)

当前智能for循环(在java中)

for (VersionCheckHandler.NewModVersionEntry entry : XplosionCoreBL.newModVersions())
Run Code Online (Sandbox Code Playgroud)

java scala scala-java-interop listbuffer

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

用元组追加ListBuffer

我有一些从simple读取的值Text file

这是我的数据:

val data = new ListBuffer[(String, BigDecimal)]
Run Code Online (Sandbox Code Playgroud)

现在,我想在我的项目内添加项目ListBuffer

data += ("bla bla", 12)
Run Code Online (Sandbox Code Playgroud)

然后收到错误:

类型不匹配; 找到:List [(String,scala.math.BigDecimal)]必需:(String,BigDecimal)数据+ = List((“ bla bla”,12))

scala list listbuffer

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

从2个给定列表中获取共同元素

所以我有这个2 collections:

import collection.mutable.ListBuffer

val list1 = ListBuffer[(String, String)]()
list1 += (("Italy", "valid"))
list1 += (("Germany", "not valid"))
list1 += (("USA", "not valid"))
list1 += (("Romania", "valid"))

val list2 = ListBuffer[String]()
list2 += "Germany"
list2 += "USA"
list2 += "Romania"
list2 += "Italy"
list2 += "France"
list2 += "Croatia"
Run Code Online (Sandbox Code Playgroud)

我想得到包含具体的公共国家的新列表,condition例如valid结果将是新列表:

Italy, Romania
Run Code Online (Sandbox Code Playgroud)

scala listbuffer

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

Scala:最有效地按第三个值排序(Int,Int,Int)的ListBuffer

我希望ListBuffer(Int, Int, Int)最有效地排序第三个值.这就是我现在拥有的.我在用sortBy.请注意y并且z两者都是ListBuffer[(Int, Int, Int)],我先区别对待.我的目标是优化它并最有效地执行此操作(取两个列表之间的差异并按第三个元素排序).我假设diff部件无法优化但sortBy可以,所以我正在寻找一种有效的方法来做分拣部分.我找到了关于排序数组的帖子,但我正在使用ListBuffer并转换为数组会增加开销,所以我宁愿不转换我的ListBuffer.

val x = (y diff z).sortBy(i => i._3)
Run Code Online (Sandbox Code Playgroud)

sorting scala listbuffer

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