LinkedList与链表

embedded/2024/10/19 5:28:57/

文章目录

  • ArrayList的缺陷
  • 链表
  • LinkedList的使用
    • 什么是LinkedList
    • LinkedList具体使用
  • ArrayList和LinkedList的区别

ArrayList的缺陷

通过源码知道,ArrayList底层使用数组来存储元素

由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此:java集合中又引入了LinkedList,即链表结构。

链表

链表的概念及结构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

链表的实现

java">//无头单向非循环链表实现public class SingleLinkedList {//头插法public void addFirst(int data){}//尾插法public void addLast(int data){}//任意位置插入,第一个数据节点为0号下标public void addIndex(int index,int data){}//查找是否包含关键字key是否在单链表当中public boolean contains(int key){return false;}//删除第一次出现关键字为key的节点public void remove(int key){}//删除所有值为key的节点public void removeAllKey(int key){}//得到单链表的长度public int size(){return -1;}public void clear() {}public void display() {}}

LinkedList的使用

什么是LinkedList

LinkedList的官方文档

LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。
在这里插入图片描述

在集合框架中,LinkedList也实现了List接口,具体如下:
在这里插入图片描述

LinkedList具体使用

在这里插入图片描述

java">public static void main(String[] args) {// 构造空的LinkedListList<Integer> list1 = new LinkedList<>();List<String> list2 = new java.util.ArrayList<>();list2.add("JavaSE");list2.add("JavaWeb");list2.add("JavaEE");// 使用ArrayList构造LinkedListList<String> list3 = new LinkedList<>(list2);
}

在这里插入图片描述

ArrayList和LinkedList的区别

在这里插入图片描述


http://www.ppmy.cn/embedded/25470.html

相关文章

Three.js杂记(十四)———— 汽车展览·上

在学习了一些理论知识后&#xff0c;要做一下实战演练了&#xff0c;做一个简单的车辆展览来看看吧。 通过调整相机的位置&#xff0c;将导入的车辆模型分成三个视角展示。 车辆外部&#xff1a;可以观察车辆的整体外观以及轮廓结构车辆内部&#xff1a;相机在汽车内部&#…

DataV的轮播表后端返回的数据处理

由于官网上DataV的轮播表的接收data格式为: export default {data: [[行1列1, 行1列2, 行1列3],[行2列1, 行2列2, 行2列3],[行3列1, 行3列2, 行3列3],[行4列1, 行4列2, 行4列3],[行5列1, 行5列2, 行5列3],[行6列1, 行6列2, 行6列3],[行7列1, 行7列2, 行7列3],[行8列1, 行8列2,…

现代机器学习(ML)技术在医疗成像领域的新应用

现代机器学习(ML)技术在医疗成像领域的新应用主要包括以下几个方面: 一、自动病变检测 使用深度学习算法,尤其是卷积神经网络(CNN),自动识别和分类医学影像中的病变,如肿瘤、炎症等。自动病变检测是现代机器学习技术在医疗成像领域应用的一个重要方向。它主要通过以下…

使用 Docker 自建一款怀旧游戏之 - 扫雷

1&#xff09;扫雷 简介 扫雷 是一种经典的单人电脑游戏&#xff0c;最初由微软公司在 1990 年代开发并内置在 Windows 操作系统中。游戏的目标是在一个由方块组成的网格上揭开所有非地雷的方块&#xff0c;而不触发地雷。每个方块上都标有数字&#xff0c;表示周围 8 个方块中…

Python urllib 爬虫入门(1)

本文主要为Python urllib类库函数和属性介绍及一些简单示例。 目录 urllib爬取网页 简单示例 写入文件 其他读取方法 readline函数 readlines函数 response属性 当前环境信息 返回状态码 返回url地址 对url进行编码与解码 写入文件 总结 urllib爬取网页 通过pyth…

混合A* 中基于 Voronoi 势场的路径代价和 Voronoi 势场的实现测试

参考 Practical Search Techniques in Path Planning for Autonomous Driving 混合 A* 论文 Sensor-Based Exploration: The Hierarchical Generalized Voronoi Graph Voronoi 图论文 认识 Voronoi &#xff0c;泰森多边形 voronoi 介绍和应用 Voronoi Field 和 Voronoi Dia…

【数据结构】顺序表专题

前言 本篇文章我们来进行有关顺序表的专题训练&#xff0c;让我们一起来看一下有关顺序表的算法题 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 &#x1f4dd;若有问题 评论区见 &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 1.移除…

修改后门ctime | Linux 后门系列

0x00 前情提要 在 alias 后门 &#xff5c; Linux 后门系列一文中&#xff0c;我们为了让后门完美一些&#xff0c;修改了后门文件的 atime、mtime&#xff0c;但是 ctime 一直没有办法修改&#xff0c;今天我们来把这一块补齐&#xff0c;让后门更加完美 atime -> access t…