Java Top.

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程

1.介绍

linkedlist.是一个双链接的名单实现列表de接口。它实现了所有可选列表操作并允许所有元素(包括空值)。

2.特征

您可以找到最重要的属性linkedlist.

  • 索引到列表中的操作将遍历从开头或结尾的列表,以较接近指定的索引
  • 它不是同步
  • 它的迭代器listiderator.迭代器是失败(这意味着在迭代器的创建之后,如果列表被修改,则ConcurrentModificationException.将被抛出)
  • 每个元素都是一个节点,它会对下一个和前一个的节点
  • 它保持插入令

虽然linkedlist.不同步,我们可以通过调用它来检索它的同步版本collection.synchronizedlist.方法,如:

列表列表= collections.synchronizedlist(新的linkedlist(...));

3.比较数组列表

虽然它们都实施了列表接口,它们有不同的语义 - 这绝对会影响哪一个使用的决定。

3.1。结构

一个数组列表是基于索引的数据结构支持大批。它为其元素提供随机访问,其性能等于O(1)。

另一方面,一个linkedlist.将其数据存储为元素列表,每个元素都链接到其上一个元素和下一个元素。在这种情况下,项目的搜索操作具有等于O(n)的执行时间。

3.2。运营

物品的插入,加法和拆卸操作更快linkedlist.由于无需调整数组大小或更新索引时,当元素添加到集合内的某个任意位置时,只有周围元素的引用将改变。

3.3。内存使用情况

一种linkedlist.消耗更多的记忆而不是数组列表因为每个节点linkedlist.存储两个引用,一个用于其先前的元素,一个用于其下一个元素,而数组列表仅包含数据及其索引。

4.使用

以下是一些代码样本,可以展示如何使用linkedlist.

4.1。创建

linkedlist  linkedlist = new linkedlist <>();
         

4.2。添加元素

linkedlist.实施列表de界面,除标准之外添加()都加进去()您可以找到的方法addfirst()addlast(),它分别在开始或结束时添加一个元素。

4.3。删除元素

与Element类似,此列表实现提供removeFirst()removelast()。

此外,有方便的方法removeFirstoccurence()Removelastoccurence()返回布尔值(如果收集包含指定元素的True)。

4.4。队列操作

de界面提供类似队列行为(实际上de延伸队列界面):

linkedlist.poll();linkedlist.pop();

这些方法检索第一个元素并从列表中删除它。

和...之间的不同轮询()流行音乐()就是它流行音乐会扔nosuchelementException()在空名单上,而轮询返回null。APIS.pollfirst()Polllast()也可用。

这里是API工作:

linkedlist.push(对象o);

它将元素插入收集头。

linkedlist.有许多其他方法,其中大多数应该熟悉已经使用的用户清单。其他提供的其他人de可能是“标准”方法的方便替代方案。

可以找到完整的文档这里

结论

数组列表通常是默认值列表执行。

但是,有一些用例使用linkedlist.将是一个更好的拟合,例如常量插入/删除时间的偏好(例如,频繁插入/删除/更新),在恒定访问时间和有效内存使用情况下。

可以找到代码样本在github上

Java底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
评论在本文上关闭!