LinkedList的源码分析(三)
前面两篇通过源码分析了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的源码分析(三)相关推荐
- Nouveau源码分析(三):NVIDIA设备初始化之nouveau_drm_probe
Nouveau源码分析(三) 向DRM注册了Nouveau驱动之后,内核中的PCI模块就会扫描所有没有对应驱动的设备,然后和nouveau_drm_pci_table对照. 对于匹配的设备,PCI模块 ...
- 【投屏】Scrcpy源码分析三(Client篇-投屏阶段)
Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...
- Spring源码分析(三)
Spring源码分析 第三章 手写Ioc和Aop 文章目录 Spring源码分析 前言 一.模拟业务场景 (一) 功能介绍 (二) 关键功能代码 (三) 问题分析 二.使用ioc和aop重构 (一) ...
- ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析
动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...
- 【转】ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- 【转】ABP源码分析三十三:ABP.Web
ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现. AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事 一,在 ...
- 【转】ABP源码分析三十一:ABP.AutoMapper
这个模块封装了Automapper,使其更易于使用. 下图描述了改模块涉及的所有类之间的关系. AutoMapAttribute,AutoMapFromAttribute和AutoMapToAttri ...
- 【转】ABP源码分析三:ABP Module
Abp是基于模块化设计思想进行构建的.开发人员可以将自定义的功能以模块(module)的形式集成到ABP中.具体的功能都可以设计成一个单独的Module.Abp底层框架提供便捷的方法集成每个Modul ...
最新文章
- 从LeNet到EfficientNet:CNN的演变和特点总结
- 前端实用工具大全, 有任何棘手的实现, 可以来这里拿
- ElementUI弹出新增窗口
- VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项
- 平板android优化网络,Android版Firefox更新 针对平板设备优化
- mysql数据库容量为多少GB_MySQL数据库单表容量有多少 MySQL数据库使用教程
- 如何降低BI系统建设的风险
- 【Java】IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web
- win10系统下插入U盘有声音提示却不显示盘符
- es中索引对象包含数组子节点时, 查询和聚合的统计需要注意的问题。
- 三,c程序的编辑,编译,链接和运行
- 中国首枚NFC邮票发行背后,NFC技术的“有限性”创新
- 牛顿法和割线法方程求根(C语言)
- 吹爆“Alibaba”自研Spring全家桶全套全彩学习笔记(终极版)
- plt.scatter 中cmap参数详解
- 聚美优品正式退市:陈欧下一个将为谁代言?
- 数值代数_图像处理_一维图像恢复例子(shaw)
- android计算器工程布局,Android 计算器布局测试
- Linux内核进程调度时机和过程
- mpu6050 z轴校准_关于MPU6050 校准问题请教
热门文章
- java手机编译器不能编译_王牌战士叶羽天赋王牌战士叶羽天赋|王牌战士手游猎手莫甘天赋选择推荐_科贝软件网...
- 小米自打脸,1亿像素无意义
- python画光头强_光头强简笔画怎么画
- android+解锁风格,Android开发实现图案解锁功能
- Cerebro 插件之电影磁力搜索器
- DNS BIND之运维管理脚本
- 计算机专业考cisa,考CISA证书都有什么条件?(比如:学历?流程?)
- 元宇宙 | 引擎、房产和演唱会
- 网友咨询:流量卡可以用别人的身份证吗,这种情况有什么风险吗?
- 红米手机/老米手机 adb devices 找不到设备