java – 如何增强增强for for循环?
作者:互联网
我正在迭代String对象列表的元素
一个接一个地:
LinkedList list;
// add values to the list here
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i));
在这里,每次我在列表上调用get()时,列表从其一端一直迭代到第i个元素 – 因此上述循环的复杂度为O(n ^ 2).
是一个.)与上面的增强型for循环相同,或者b.)是for循环保持指针最后的位置,因此下面循环的复杂性是O(n)?
for (String s:list)
System.out.println(s);
如果上面的情况(b) – 我认为是 – 在列表中使用迭代器是否有任何优势.这是一个简单的迭代 – 没有回头和前后.编辑:..我的列表操作是只读的.
TIA.
解决方法:
你称之为“增强for循环”(它实际上称为foreach循环)在内部使用迭代器来处理任何可迭代的东西 – 包括链表.
换句话说,它是O(n)
它确实通过使用整数来处理数组上的循环并以这种方式迭代它,但这很好,因为它在数组中表现良好.
手动使用迭代器的唯一好处是,如果需要在迭代时删除部分或全部元素.
标签:java,list,foreach,time-complexity,iterator 来源: https://codeday.me/bug/20191008/1873191.html