首页 > 编程语言 >2023-03-12 Java中的链表

2023-03-12 Java中的链表

时间:2023-03-12 19:57:33浏览次数:75  
标签:03 12 LinkedList index int 链表 数据结构 动态

链表 LinkedList

JDK中有标准库实现:java.util.LinkedList,和java.util.List对比,其实两者都可以看做是动态数组

链表的特征

  • 线性数据结构——链表
  • 是真正的动态数据结构:数据存储在节点(Node)中,是真正的动态,因为不需要处理固定容量的问题
  • 是最简单的动态数据结构
  • 更深入的理解引用(或指针)
  • 更深入的理解递归
  • 辅助组成其他数据结构(图、树、hash).

数组和链表的对比

参考博客:https://blog.csdn.net/qq_40550973/article/details/80598360

对比 优点 缺点
数组 支持用下标快速查询 需要额外维护扩缩容,不是真正地动态
链表 动态,不需要自己维护扩缩容 不适合用于索引有语义的情况,即没办法用下标访问

LinkedList优缺点

优点:

  • 1.有序
  • 2.可以向前面和向后添加
  • 3.中间插入也很方便
  • 4.可以用实现简单队列模式(removeFirst()处理队列中的任务,add()向队列中排队)

缺点:

  • 1.消耗内存有点大
  • 2.定位删除和定位查找 都是比较慢
  • 3.检索能力差

LinkedList的API

参考博客 https://www.cnblogs.com/ysocean/p/8657850.html 和 和第2章的java.util.List对比很相似

  • 1、添加元素
    • ①、addFirst(E e)
    • ②、addLast(E e)和add(E e)
    • ③、add(int index, E element)
    • ④、addAll(Collection c)
  • 2、删除元素
    • ①、remove()和removeFirst()
    • ②、removeLast()
    • ③、remove(int index)
    • ④、remove(Object o)
  • 3、修改元素
    • set(int index, E element)
  • 4、查找元素
    • ①、getFirst()
    • ②、getLast()
    • ③、get(int index)
    • ④、indexOf(Object o)
  • 5、遍历集合
    • ①、普通 for 循环
    • ②、迭代器
  • 9、迭代器和for循环效率差异

标签:03,12,LinkedList,index,int,链表,数据结构,动态
From: https://www.cnblogs.com/lsgwr/p/17208902.html

相关文章

  • Mybatis-lesson06-03-12
    id就是对应的namespace中的方法名;resultType就是sql语句执行的返回值(Classor数据类型)parameterType参数的类型(方法名中的参数),如果为简单的数据类型,默认可以不写。......
  • 2023/03/09刷题
    链接B-EqualRectangles这个题还是比较有意思的因为有4n个,我们可以发现我们如果把序列排序的话必然有两个数字肯定是一模一样的,因为是长方形的两个边,我们还可以发现......
  • 2023/03/11刷题
    A.MinimizingtheString链接A.MinimizingtheString这个题的意思就是删除一个字母让字符串的字典序变得最小,如果字符串的顺序是abcda的话很明显我们要删除d所以我......
  • Mybatis-lesson05-结果映像-第一课:简单的映射-03-12
    第一步:pojo的属性和数据库的列名不一样packagecom.feijian.pojo;publicclassUser{privateintid;privateStringname;privateStringpassword;......
  • P1122 最大子树和
    P1122最大子树和-洛谷|计算机科学教育新生态(luogu.com.cn)题目就是要求:树上点权之和最大的一个连通分量令dp[i]为必须选i节点的情况下,最大的子树点权和则有转移......
  • 计应212小组讨论junit成果
    JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。它包括以下特性:1、用于测试期望结果的断言(Assertion)2、用于共享共同测试数据的测试工具3、用于方便......
  • C++银行卡管理系统[2023-03-12]
    C++银行卡管理系统[2023-03-12]第一次编程作业:(1)将代码阅读、调试通过;(2)添加功能:包括增加资金转账明细、按时间统计账号转账信息等。头文件:bankcard.h源文件:mai......
  • 【数据结构入门】带头双向循环链表(List)详解(初始化、增、删、查、改)
    1、链表的种类:总共有8种,以带不带头,单向或者双向,循环或者不循环来组合形成。单向或者双向带头或者不带头循环或者非循环主要学习下面两种链表的功能实现无头单向非循环链表:又......
  • 【题解】CF1264D2
    题目大意给定一个长度为\(n\)的字符串,其中只有(,),?三种字符,其中?可以为(或者)对于一个括号序列,定义其权值为其通过删除字符后可以得到的合法的括号匹配的最深的深度,下......
  • 每日总结 3.12
    今天学习了查询的代码:packagecom.example.xx.db;importandroid.annotation.SuppressLint;importandroid.content.Context;importandroid.database.Cursor;impor......