更新时间:2020-06-09 16:25:35 来源:极悦 浏览2596次
1.简介
LinkedList是 List和 Deque接口的双链表实现。它实现所有可选的列表操作并允许所有元素(包括 null)。
2.特点
java中的LinkedList使用指南
您可以在下面找到LinkedList最重要的属性:
索引到列表中的操作将从开头或结尾遍历列表,以较接近指定索引为准
它没有同步,也就是说线程是不安全的
它的Iterator和ListIterator迭代器是快速失败的(fail-fast,这意味着在迭代器创建之后,如果修改了列表,将抛出一个ConcurrentModificationException)
每个元素都是一个节点,它保留对下一个和前一个节点的引用
它维护插入顺序
虽然LinkedList未同步,但我们可以通过调用
Collections.synchronizedList方法检索它的同步版本,如:
List list = Collections.synchronizedList(new LinkedList(...));
3.与ArrayList的比较
虽然它们都实现了List接口,但它们具有不同的语义 - 这肯定会影响决定使用哪一个。
(1)结构体
一个ArrayList的是由支持基于索引数据结构阵列。它提供对其元素的随机访问,其性能等于O(1)。
另一方面,LinkedList将其数据存储为元素列表,并且每个元素都链接到其前一个和下一个元素。在这种情况下,项目的搜索操作具有等于O(n)的执行时间。
(2)操作
在LinkedList中项的插入,添加和删除操作更快,因为当将元素添加到集合内的某个任意位置时,不需要调整数组大小或更新索引,只有周围元素中的引用才会更改。
(3)内存使用情况
链表比ArrayList的内存消耗要大,因为在每一个节点的链表存储两个引用,一个用于它的前一个元素,一个用于它的下一个元素,而ArrayList中仅保持数据和它的索引。
4.用法
以下是一些代码示例,展示了如何使用LinkedList:
(1)创建
LinkedList<Object> linkedList = new LinkedList<>();
(2)添加元素
LinkedList实现List和Deque接口,除了标准的add()和addAll()方法,你可以找到addFirst()和addLast(),它们分别在开头或结尾添加一个元素。
(3)删除元素
与元素添加类似,此列表实现提供removeFirst()和removeLast()。
此外,还有方便的方法removeFirstOccurence()和removeLastOccurence()返回boolean(如果collection包含指定的元素,则为true)。
(4)队列操作
Deque接口提供类似队列的行为(实际上Deque扩展了Queue接口):
linkedList.poll();
linkedList.pop();
这些方法检索第一个元素并将其从列表中删除。
这两个方法之间的区别是如果有空元素pop()将抛出NoSuchElementException异常,而poll()则返回null。API pollFirst()和pollLast()也可用。
以下是push(Object o)工作原理:
linkedList.push(Object o);
其中将元素作为集合的头部插入。
LinkedList有许多其他方法,其中大多数方法对于已经使用过List的用户应该很熟悉。Deque提供的其他方法可能是“标准”方法的便捷替代方案。
5.结论
ArrayList通常是默认的List实现。但是在持续的读多于写的场景(频繁插入/删除/更新)可能更适用LinkedList。
以上就是极悦java培训机构的小编针对“java中linkedlist的用法指南”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习