java – 从ListBuffer中删除元素

根据
this posting,据说
ListBuffer允许恒定时间去除第一个和最后一个元素.我一直在研究API参考和ListBuffer源代码,但我找不到如何在常量时间中删除最后一个元素,而remove(0)将为第一个元素执行作业.删除最后一个元素的正确方法是什么?

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

最佳答案 第一个问题有一个简单但令人失望的答案:你不能在恒定时间内删除最后一个元素,因为这样做需要引用前一个元素. (它是一个单独的链表,在包装类中,包含列表的开头和结尾元素.)

第二个问题同样容易,也许令人失望:Scala中的迭代器只是对集合的看法.它们不会修改基础集合. (这与“默认不可变,只在必要时可变”哲学一致.)

点赞