java中LinkedList使用迭代器优化移除批量元素原理分析


小编给大家分享一下java中LinkedList使用迭代器优化移除批量元素原理分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:调用方法:list.iterator();
实现了ListIterator接口,ListIterator接口继承Iterator接口。并且ListItr extends Itr。Itr有的方法其都有。并且增加了hasPrevious 是否有前驱nextIndex 下一个索引位置previousIndex 前驱的索引位置previous 前驱元素set 替换最后返回的元素add 插入一个结点到最后返回的元素之后调用方法:list.iterator();

重点看下remove方法LinkedList 源码的remove(int index)的过程是
先逐一移动指针,再找到要移除的Node,最后再修改这个Node前驱后继等移除Node。如果有批量元素要按规则移除的话这么做时间复杂度O(n)。但是使用迭代器是O(n)。LinkedList是双向链免费云主机域名表,这里示意图简单画个单链表
比如要移除链表中偶数元素,先循环调用get方法,指针逐渐后移获得元素,比如获得index = 1;指针后移两次才能获得元素。
当发现元素值为偶数是。使用idnex移除元素,如list.remove(1);链表先Node node(int index)返回该index下的元素,与get方法一样。然后再做前驱后继的修改。所以在remove之前相当于做了两次get请求。导致时间复杂度是O(n)。

继续移除下一个元素需要重新再走一遍链表(步骤忽略当index大于半数,链表倒序查找)

以上如果移除偶数指针做了6次移动。删除2节点
get请求移动1次,remove(1)移动1次。删除4节点
get请求移动2次,remove(2)移动2次。迭代器的next指针执行一次一直向后移动的操作。一共只需要移动4次。当元素越多时这个差距会越明显。整体上移除批量元素是O(n),而使用list.remove(index)移除批量元素是O(n)
以上是“java中LinkedList使用迭代器优化移除批量元素原理分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

相关推荐: 小程序有什么提高用户裂变增长技巧

这篇文章主要讲解了“小程序有什么提高用户裂变增长技巧”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“小程序有什么提高用户裂变增长技巧”吧!   小程序的特点是即搜即用,用完即走,更适合那些轻量级的工具型应用。用户…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/26 16:34
下一篇 09/26 20:51

相关推荐