繁体   English   中英

从ListBuffer中删除元素

[英]Removing elements from ListBuffer

根据这篇文章 ,据说ListBuffer允许恒定时间移除第一个和最后一个元素。 我一直在研究API参考和ListBuffer源代码,但是我找不到如何在恒定时间内remove(0)最后一个元素的方法,而remove(0)会完成第一个元素的工作。 删除最后一个元素的正确方法是什么?

另一个问题:是否有可能在迭代ListBuffer时有效地删除元素? 在Java中,可以使用Iterator.remove()完成此操作,但是Scala迭代器似乎没有remove()方法...

第一个问题有一个令人失望的简单答案:您不能在固定时间内删除最后一个元素,因为这样做需要引用element-before-last。 (这是一个单链接列表,位于包装器类中,该包装器类包含列表的开始和结束元素。)

第二个问题同样容易,甚至可能令人失望:Scala中的Iterator只是集合的视图。 他们不修改基础集合。 (这符合“默认情况下不可变,仅在必要时可变”的哲学。)

您可以使用trimEnd(1)删除最后一个元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM