class="hide-preCode-box">

image.png
链表也是支持addall()方法的,也是可以将一个链表添加到另一个链表。

import java.util.LinkedList;

public class T {

    public static void main(String[] args) {
        LinkedList linkedList1=new LinkedList<>();
        LinkedList linkedList2=new LinkedList<>();


        linkedList1.add(1);
        linkedList1.add(2);
        linkedList1.add(3);

        linkedList2.add(4);
        linkedList2.add(5);
        linkedList2.add(6);

        linkedList1.addAll(linkedList2);

        System.out.println(linkedList1.toString());
    }
    }
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"> class="hide-preCode-box">

image.png

除了继承自 List 的方法外,LinkedList 还提供了以下特有方法:

  1. addFirst(E e)addLast(E e):在链表头部和尾部添加元素。
  2. getFirst()getLast():获取链表头部和尾部的元素。
  3. removeFirst()removeLast():移除链表头部和尾部的元素。
  4. offerFirst(E e)offerLast(E e)pollFirst()pollLast():这些方法提供了双端队列的功能。
使用场景
  1. 当需要频繁地在列表的头部或尾部添加或删除元素时,LinkedList 是一个很好的选择。
  2. 当不需要频繁地进行随机访问时,LinkedList 可以提供比 ArrayList 更好的性能。

总结:

顺序表(如ArrayList)
  1. 基于数组:顺序表使用数组来存储元素,元素在内存中连续存放。
  2. 随机访问:支持快速的随机访问,即可以直接通过索引访问任意位置的元素(时间复杂度O(1))。
  3. 动态扩容:当元素数量超过数组容量时,需要进行扩容操作,这通常涉及到创建更大的数组并复制现有元素。
  4. 插入和删除:在数组末尾添加元素非常快(时间复杂度O(1)),但在中间或开始位置插入或删除元素可能较慢,因为需要移动后续元素以维持连续性(时间复杂度O(n))。
  5. 内存使用:通常比链表更紧凑,因为不需要额外存储指向其他元素的引用。
  6. 适用场景:适合于随机访问频繁的场景,以及在列表末尾添加元素的操作。
链表(如LinkedList)
  1. 基于节点:链表由一系列节点组成,每个节点包含数据和指向下一个(及前一个,对于双向链表)节点的指针。
  2. 非连续存储:元素在内存中可以是不连续的,通过指针连接。
  3. 动态大小:大小可以动态变化,不需要预先分配大量内存。
  4. 插入和删除:在已知前一个节点的情况下,可以在O(1)时间内完成,因为只需要改变几个指针。但在中间位置进行操作可能需要O(n)时间来找到前一个节点。
  5. 随机访问:不支持高效的随机访问,访问特定位置的元素需要从头开始遍历(时间复杂度O(n))。
  6. 内存使用:每个节点需要额外存储至少一个(单向链表)或两个(双向链表)指针,因此内存使用相对较高。
  7. 适用场景:适合于插入和删除操作频繁的场景,尤其是在列表中间,以及不需要频繁随机访问元素的应用。

总结

选择使用顺序表还是链表,取决于具体的应用需求和操作模式。理解它们的特点可以帮助开发者选择最合适的数据结构,以优化程序的性能。

. - 力扣(LeetCode):给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
. - 力扣(LeetCode):逆置单链表
. - 力扣(LeetCode):给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
. - 力扣(LeetCode):给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
. - 力扣(LeetCode):合并两个有序链表
. - 力扣(LeetCode):求环的路口
. - 力扣(LeetCode):判断链表是否为环
. - 力扣(LeetCode):给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null
链表的回文结构_牛客题霸_牛客网:判断链表是否回文

需要答案可私聊我,当然官方也有题解唔。

data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/2302_81249757/article/details/140989777","extend1":"pc","ab":"new"}">>
注:本文转载自blog.csdn.net的Gu Gu Study的文章"https://blog.csdn.net/2302_81249757/article/details/140989777"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!