Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ListBuffer中删除元素_Java_Scala_Iterator_Scala Collections - Fatal编程技术网

Java 从ListBuffer中删除元素

Java 从ListBuffer中删除元素,java,scala,iterator,scala-collections,Java,Scala,Iterator,Scala Collections,根据,据说它允许固定时间去除第一个和最后一个元素。我一直在研究API引用和ListBuffer源代码,但我找不到如何在固定时间内删除最后一个元素,而remove(0)将为第一个元素完成工作。移除最后一个元素的正确方法是什么 另一个问题:在ListBuffer上迭代时是否可以有效地删除元素?在Java中,可以使用Iterator.remove()完成,但Scala迭代器似乎没有remove()方法……第一个问题有一个简单但令人失望的答案:不能在固定时间内删除最后一个元素,因为这样做需要在最后一个元

根据,据说它允许固定时间去除第一个和最后一个元素。我一直在研究API引用和ListBuffer源代码,但我找不到如何在固定时间内删除最后一个元素,而
remove(0)
将为第一个元素完成工作。移除最后一个元素的正确方法是什么


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

第一个问题有一个简单但令人失望的答案:不能在固定时间内删除最后一个元素,因为这样做需要在最后一个元素之前引用该元素。(它是一个单链接列表,位于保存列表开头和结尾元素的包装器类中。)


第二个问题同样简单,也许令人失望:
Iterator
s在Scala中只是集合的视图。它们不会修改基础集合。(这与“默认情况下不可变,只有在必要时才可变”的理念保持一致。)

您可以使用
trimEnd(1)

删除最后一个元素,谢谢您的回答,Rex。所以基本上,从ListBuffer中删除任意元素总是需要O(n)个时间,不是吗?非常令人失望的是,即使迭代器指向一个特定的元素,也不可能立即删除它:(感谢您的回答,Olaf。但是
trimEnd
似乎需要O(n)个时间。