Java中的LinkedList

介绍:

LinkedList是由节点组成的线性数据结构。 在单链列表中,每个节点包含数据和引用。 在此,参考部分引用链表中的下一个节点。

另一方面,在双链表中,我们具有指向上一个和下一个节点的数据和引用。 Java提供了LinkedList实现– java.util.LinkedList <T>,该实现与双向链表一起使用。 此类从AbstractList类继承,并实现List <T>Deque <T>接口。 在本快速教程中,我们将学习如何使用Java中的LinkedList类。

构造一个

我们可以通过以下方式之一实例化Java中的链表:

Java

LinkedList<Integer> intList = new LinkedList<>();
 
LinkedList<Integer> intList1 = new LinkedList<>(intList);

即此类提供了两个构造函数:

  • LinkedList():创建一个空的链表
  • LinkedList(Collection c):创建一个链表,并以c的内容为其元素对其进行初始化

添加元素:

要将元素添加到LinkedList ,我们可以使用List <T>接口中add()方法的风格。 我们还可以使用addFirst()addLast()将元素分别添加到开头或结尾。

Java

intList.add(1);  // [1]
intList.addFirst(2); // [2, 1]
intList.addLast(3); // [2, 1, 3]

删除元素:

同样,要删除项目,我们可以从List接口使用remove(index),remove(obj)方法。 否则,我们也可以选择removeFirst()removeLast()方法:

Java

int firstElement = intList.removeFirst();
int lastElement = intList.removeLast();

这些方法既删除又返回删除的值。

Java LinkedList类还提供removeFirstOccurrence(Object obj)removeLastOccurrence(Object obj)方法,以分别删除给定值的第一次出现和最后一次出现。 如果列表中不存在此类值,则这些方法将返回false

boolean removed = intList.removeFirstOccurrence(1);

查询元素:

LinkedList类中有getFirst()getLast()方法,用于查询链接列表的第一个或最后一个元素:

Java

int firstElement = intList.getFirst();
int lastElement = intList.getLast();

由于这是一个双向链接的列表实现,因此getFirst()getLast()都是恒定时间操作。

如果我们知道要检索的元素的索引,则还可以使用List接口的get(int index)方法:

Java

int elementAtIndex1 = intList.get(1);

遍历

就像其他任何形式的列表一样,我们将遍历链接列表:

Java

//Using a for loop
for(int num : intList) {
    System.out.println(num);   
}
 
//Using iterator
ListIterator itr = intList.listIterator();
while(itr.hasNext()) {
    System.out.println(itr.next());
}
 
//Using forEach construct
intList.forEach( value -> System.out.println(value); );

让我们概述一下Java LinkedListArrayList类之间的区别:

链表 数组列表
使用双向链接列表表示 使用动态数组的概念
实现两个列表

和德克

介面

只实施清单

接口

不适合随机访问 非常适合随机访问。 如果我们知道索引,则只需要O(1)时间即可检索
在Java链表的开头和结尾处进行O(1)插入/删除 将元素插入ArrayList可能会导致调整后备数组的大小,因此摊销成本为O(n)。
同样,在ArrayList的开头插入将需要我们将所有元素向右移动一个位置。
存储对上一个和下一个节点的引用的内存开销 无需存储其他信息

随意在本文中了解有关ArrayList的更多信息 Java LinkedList中还提供了从List <T>接口继承的ArrayList类中的所有方法。

结论:

在本快速教程中,我们探讨了Java LinkedList类的一些最受欢迎的方法。 我们还介绍了Java ArrayListLinkedList之间的区别。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/03/linkedlist-java.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值