Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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会有一个链表?_Java_Collections - Fatal编程技术网

如果不转换为迭代器就无法获取下一个元素,为什么Java会有一个链表?

如果不转换为迭代器就无法获取下一个元素,为什么Java会有一个链表?,java,collections,Java,Collections,如果不使用迭代器就无法访问下一个元素,为什么Java会有一个链表?因为您希望代码与特定实现无关。如果它有“next”函数,并且以后您希望更改为ArrayList实现,那么您将遇到一个大问题 还有更多解释: LinkedList只是List接口的另一个实现。 ArrayList和LinkedList之间的主要区别在于,当LinkedList保存对下一个对象的引用时,数组使用可扩展数组来保存列表 您仍然有get(index)函数来获取索引中的对象,但效率不高(O(n)) 使用LinkedList主要

如果不使用迭代器就无法访问下一个元素,为什么Java会有一个链表?

因为您希望代码与特定实现无关。如果它有“next”函数,并且以后您希望更改为ArrayList实现,那么您将遇到一个大问题

还有更多解释:
LinkedList
只是
List
接口的另一个实现。
ArrayList
LinkedList
之间的主要区别在于,当
LinkedList
保存对下一个对象的引用时,数组使用可扩展数组来保存列表

您仍然有
get(index)
函数来获取索引中的对象,但效率不高(O(n))

使用LinkedList主要是为了在ArrayList效率更高的情况下减少运行时间

此外:

迭代器只是一种遍历列表的方法。拥有
LinkedList
数据结构的原因与某些操作的效率有关


有关如何在
LinkedList
ArrayList
之间进行选择的详细说明,请参见您不“将列表转换为迭代器”,而是“在列表上获得迭代器”。您会发现迭代器机制更容易及时使用。

LinkedList
列表
接口的一个实现,也是
集合
的一个相对物。链表本身就是一个概念,其中列表的每个元素都包含在一个节点中,该节点知道下一个元素和上一个元素。这样做是为了保持元素的插入顺序

另一个常见的实现不会出现这种情况:
ArrayList
,其中每个元素都在底层数组中分配,在这种情况下,顺序不受保证


迭代器
是迭代列表的多种方法之一,它恰好具有在迭代列表时管理列表的巨大优势(例如,迭代器的
删除
方法不会以
ConcurrentModificationException
结束)它与遍历集合的特定实现无关。它不是集合,只是以循环友好的方式“管理”它。

如果您只想拥有下一个元素,可以使用

list.get(Int index+1);
并将索引设置为

index = list.indexOf(<The current object your are in>);

您能分享一下将列表转换为迭代器的方法吗?o、 o
for(List l : o)