根据this posting,据说ListBuffer允许恒定时间删除第一个和最后一个元素。我一直在研究API参考和ListBuffer源代码,但我无法找到如何在remove(0)
为第一个元素完成工作的情况下在常量时间内删除最后一个元素。删除最后一个元素的正确方法是什么?
另一个问题:是否可以在迭代ListBuffer时有效地删除元素?在Java中,可以使用Iterator.remove()
完成,但Scala迭代器似乎没有remove()
方法......
答案 0 :(得分:1)
第一个问题有一个简单但令人失望的答案:你不能在常数时间内删除最后一个元素,因为这样做需要引用前一个元素。 (它是一个单独的链表,在包装类中,包含列表的开头和结尾元素。)
第二个问题同样容易,也许令人失望:Scala中的Iterator
只是对集合的看法。它们不会修改基础集合。 (这与“默认不可变,只在必要时可变”哲学一致。)
答案 1 :(得分:1)
您可以使用trimEnd(1)