加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

确认Java LinkedList“foreach”循环

发布时间:2020-12-14 05:53:34 所属栏目:Java 来源:网络整理
导读:美好的一天, 有人可以确认java – iterating a linked list帖子底部的内容 帖子提到你可以使用for(char c:linkedlistofchars)语法,它仍然是O(n).我想要访问一个看起来像这样的列表…… a b c d e f 实际上在for循环的每次迭代期间都会在链表的开始处运行,就
美好的一天,

有人可以确认java – iterating a linked list帖子底部的内容
帖子提到你可以使用for(char c:linkedlistofchars)语法,它仍然是O(n).我想要访问一个看起来像这样的列表……

a b c d e f

实际上在for循环的每次迭代期间都会在链表的开始处运行,就像这样……

a ab abc abcde abcdef

导致访问时间不是O(n).

这究竟是如何工作的?它对数组和数组运算符有意义,但java语法如何知道如何使用java中的foreach循环遍历链表?

我认为LinkedList数据结构只是一个额外的库,而不是核心语言语法的一部分. (我确实知道LinkedList类在java中是标准的)

我希望我能够清楚地解释我的担忧….谢谢

解决方法

首先,任何实现Iterable的类的实例都可以在foreach循环中使用.原因是在编译之后,for(套装:套装)实际上变成了(Iterator i = suit.iterator(); i.hasNext();).有关详细信息,请参见 this explanation.

集合实现了特定于数据结构的优化迭代器.具体到LinkedList,迭代器保持指向最后返回对象的指针,以允许常量时间next()和previous()操作.因此,使用foreach-loop迭代链表将导致O(n)时间复杂度.您可以查看源代码以获取更多详细信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读