前面两篇通过源码分析了LinkedList的一些基本方法,这一篇将这些方法做一个整体汇总整理,看看哪些方法的作用是相同的,以及他们在使用中的一个分类,因为LinkedList可作为栈、队列、双端队列使用。下面先列出这些基本方法:

        LinkedList<Object> linkedList = new LinkedList<>();linkedList.add("1");linkedList.add(1,"");linkedList.addFirst("");linkedList.addLast("");linkedList.get(0);linkedList.getFirst();linkedList.getLast();linkedList.remove(0);linkedList.remove();linkedList.removeFirst();linkedList.removeLast();linkedList.contains("");linkedList.clear();linkedList.offer("");//add(e)、addLast(e)linkedList.offerFirst("");//addFirst(e)linkedList.offerLast("");//addLast(e)linkedList.peek();//peekFirstlinkedList.peekFirst();linkedList.peekLast();linkedList.poll();//pollFirst()linkedList.pollFirst();linkedList.pollLast();linkedList.pop();//removeFirst()linkedList.push("");//addFirst(e)linkedList.set(0,"");linkedList.element();

1)添加(插入)元素

//将指定的元素插入到列表的开头
linkedList.addFirst("");
linkedList.offerFirst("");
linkedList.push("");//将指定元素追加到此列表的末尾。
linkedList.add("");
linkedList.addLast("");
linkedList.offer("");
linkedList.offerLast("");//将指定元素插入到此列表中的指定位置。
linkedList.add(1,"");//用指定的元素替换此列表中指定位置的元素。
linkedList.set(0,"");

2)获取(检索)元素

//获取列表中的第一个元素
linkedList.getFirst();
//检索但不删除此列表的头(第一个元素)。
linkedList.peek();
linkedList.peekFirst();
linkedList.element();
//检索并删除此列表的头(第一个元素)。
linkedList.poll();
linkedList.pollFirst();//获取列表中的最后一个元素。
linkedList.getLast();
//检索但不删除此列表的尾(最后一个元素)。
linkedList.peekLast();
//检索并删除此列表的尾(最后一个元素)。
linkedList.pollLast();//返回此列表中指定位置的元素。
linkedList.get(0);

3)删除元素

//检索并删除此列表的头(第一个元素)。
linkedList.remove();
linkedList.removeFirst();
linkedList.pop();//检索并删除此列表的尾(最后一个元素)。
linkedList.removeLast();//移除此列表中指定位置的元素。
linkedList.remove(0);

4)查找列表中是否包含指定元素

linkedList.contains("");

5)从列表中删除所有元素

linkedList.clear();

6)作为队列使用

//检索但不删除此列表的头(第一个元素)。
linkedList.peek();
linkedList.element();
//检索并删除此列表的头(第一个元素)。
linkedList.poll();
linkedList.remove();
//将指定元素追加到此列表的末尾。
linkedList.offer("");

7)作为双端队列使用

//将指定的元素插入到列表的开头、结尾
linkedList.offerFirst("");//addFirst(e)
linkedList.offerLast("");//addLast(e)//检索但不删除此列表的头(第一个元素)、尾(最后一个元素)。
linkedList.peekFirst();
linkedList.peekLast();//检索并删除此列表的头(第一个元素)、尾(最后一个元素)。
linkedList.pollFirst();
linkedList.pollLast();//检索并删除此列表的头(第一个元素)。
linkedList.pop();//removeFirst()//将指定的元素插入到列表的开头
linkedList.push("");//addFirst(e)

8)作为栈使用

//将指定的元素插入到列表的开头
linkedList.push("");//检索并删除此列表的头(第一个元素)。
linkedList.pop();

9)时间复杂度是O(n)的方法

//将指定元素插入到此列表中的指定位置。
linkedList.add(1,"");
//返回此列表中指定位置的元素。
linkedList.get(0);
//移除此列表中指定位置的元素。
linkedList.remove(0);
//查找列表中是否包含指定元素。
linkedList.contains("");
//从此列表中删除所有元素。
linkedList.clear();
//用指定的元素替换此列表中指定位置的元素。
linkedList.set(0,"");

实际使用中根据需要自行选取使用哪个方法。

LinkedList的源码分析(一)

LinkedList的源码分析(二)

LinkedList的源码分析(三)相关推荐

  1. Nouveau源码分析(三):NVIDIA设备初始化之nouveau_drm_probe

    Nouveau源码分析(三) 向DRM注册了Nouveau驱动之后,内核中的PCI模块就会扫描所有没有对应驱动的设备,然后和nouveau_drm_pci_table对照. 对于匹配的设备,PCI模块 ...

  2. 【投屏】Scrcpy源码分析三(Client篇-投屏阶段)

    Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...

  3. Spring源码分析(三)

    Spring源码分析 第三章 手写Ioc和Aop 文章目录 Spring源码分析 前言 一.模拟业务场景 (一) 功能介绍 (二) 关键功能代码 (三) 问题分析 二.使用ioc和aop重构 (一) ...

  4. ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  5. 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析

    动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...

  6. 【转】ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  7. 【转】ABP源码分析三十三:ABP.Web

    ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现. AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事 一,在 ...

  8. 【转】ABP源码分析三十一:ABP.AutoMapper

    这个模块封装了Automapper,使其更易于使用. 下图描述了改模块涉及的所有类之间的关系. AutoMapAttribute,AutoMapFromAttribute和AutoMapToAttri ...

  9. 【转】ABP源码分析三:ABP Module

    Abp是基于模块化设计思想进行构建的.开发人员可以将自定义的功能以模块(module)的形式集成到ABP中.具体的功能都可以设计成一个单独的Module.Abp底层框架提供便捷的方法集成每个Modul ...

最新文章

  1. 从LeNet到EfficientNet:CNN的演变和特点总结
  2. 前端实用工具大全, 有任何棘手的实现, 可以来这里拿
  3. ElementUI弹出新增窗口
  4. VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项
  5. 平板android优化网络,Android版Firefox更新 针对平板设备优化
  6. mysql数据库容量为多少GB_MySQL数据库单表容量有多少 MySQL数据库使用教程
  7. 如何降低BI系统建设的风险
  8. 【Java】IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web
  9. win10系统下插入U盘有声音提示却不显示盘符
  10. es中索引对象包含数组子节点时, 查询和聚合的统计需要注意的问题。
  11. 三,c程序的编辑,编译,链接和运行
  12. 中国首枚NFC邮票发行背后,NFC技术的“有限性”创新
  13. 牛顿法和割线法方程求根(C语言)
  14. 吹爆“Alibaba”自研Spring全家桶全套全彩学习笔记(终极版)
  15. plt.scatter 中cmap参数详解
  16. 聚美优品正式退市:陈欧下一个将为谁代言?
  17. 数值代数_图像处理_一维图像恢复例子(shaw)
  18. android计算器工程布局,Android 计算器布局测试
  19. Linux内核进程调度时机和过程
  20. mpu6050 z轴校准_关于MPU6050 校准问题请教

热门文章

  1. java手机编译器不能编译_王牌战士叶羽天赋王牌战士叶羽天赋|王牌战士手游猎手莫甘天赋选择推荐_科贝软件网...
  2. 小米自打脸,1亿像素无意义
  3. python画光头强_光头强简笔画怎么画
  4. android+解锁风格,Android开发实现图案解锁功能
  5. Cerebro 插件之电影磁力搜索器
  6. DNS BIND之运维管理脚本
  7. 计算机专业考cisa,考CISA证书都有什么条件?(比如:学历?流程?)
  8. 元宇宙 | 引擎、房产和演唱会
  9. 网友咨询:流量卡可以用别人的身份证吗,这种情况有什么风险吗?
  10. 红米手机/老米手机 adb devices 找不到设备