Ghe*_*ham 47
我找到了5种主要方法来迭代Java中的链表(包括Java 8方式):
对于循环
LinkedList<String> linkedList = new LinkedList<>();
System.out.println("==> For Loop Example.");
for (int i = 0; i < linkedList.size(); i++) {
System.out.println(linkedList.get(i));
}
Run Code Online (Sandbox Code Playgroud)
增强了循环
for (String temp : linkedList) {
System.out.println(temp);
}
Run Code Online (Sandbox Code Playgroud)
循环
int i = 0;
while (i < linkedList.size()) {
System.out.println(linkedList.get(i));
i++;
}
Run Code Online (Sandbox Code Playgroud)
迭代器
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Run Code Online (Sandbox Code Playgroud)
集合流()util(Java 8)
linkedList.forEach((temp) -> {
System.out.println(temp);
});
Run Code Online (Sandbox Code Playgroud)
有一点需要指出的是For Loop或While循环的运行时间是O(n平方),因为get(i)操作需要O(n)时间(详情请参阅此内容).其他3种方式需要线性时间并且表现更好.
Dav*_*e G 13
保证链接列表按顺序执行.
从文档中
有序集合(也称为序列).该接口的用户可以精确控制列表中每个元素的插入位置.用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素.
iterator() 以适当的顺序返回此列表中元素的迭代器.
小智 7
正如Linkedlist的定义所说,它是一个序列,您可以保证按顺序获取元素.
例如:
import java.util.LinkedList;
public class ForEachDemonstrater {
public static void main(String args[]) {
LinkedList<Character> pl = new LinkedList<Character>();
pl.add('j');
pl.add('a');
pl.add('v');
pl.add('a');
for (char s : pl)
System.out.print(s+"->");
}
}
Run Code Online (Sandbox Code Playgroud)
链表确实保证顺序。
不要使用linkedList.get(i),尤其是在顺序循环中,因为它违背了拥有链表的目的,并且代码效率低下。
使用列表迭代器
ListIterator<Object> iterator = myLinkedList.listIterator();
while( iterator.hasNext()) {
System.out.println(iterator.next());
}
Run Code Online (Sandbox Code Playgroud)