
LinkedList 的底层是双向链表结构 ,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。
LinkedList 没有实现 RandomAccess 接口,因此 LinkedList 不支持随机访问 。
对于 LinkedList 来说,它的接口和 ArrayList 的接口基本是一样的,只是逻辑和物理存储上面的区别,所以具体接口可以参考 ArrayList 的笔记或者直接翻看官方文档!
遍历方式
public static void main(String[] args) {
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
*// 遍历方式一:使用自带的重写的toString()方法*
* *System.*out*.println(list);
*// 遍历方式二:for-each循环*
* *for (int e : list) {
System.*out*.print(e + " ");
}
System.*out*.println();
*// 遍历方式三:普适的迭代器*
* *Iterator<Integer> it1 = list.iterator();
while(it1.hasNext()) {
System.*out*.print(it1.next() + " ");
}
System.*out*.println();
*// 遍历方式四:使用LinkedList专用的迭代器*
* *ListIterator<Integer> it2 = list.listIterator();
while(it2.hasNext()) {
System.*out*.print(it2.next() + " ");
}
System.*out*.println();
*// 遍历方式五:反向迭代器*
* *ListIterator<Integer> rit = list.listIterator(list.size());
while(rit.hasPrevious()) {
System.*out*.print(rit.previous() + " ");
}
System.*out*.println();
}ArrayList 与 LinkedList 的区别
