当前位置:网站首页>实现类LinkedList
实现类LinkedList
2022-07-21 18:39:00 【华为云】
2:实现类LinkedList
基本的继承关系上,同ArrayList一样不是直接继承List接口,是一个实现类。
我们还是明确它的继承以及实现关系
public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, Serializable
LinkedList的底层实现是链表,并且是双向链表。
与ArrayList相比,ArrayList的基本实现是数组,数组是便于进行查找的,而LinkedList的基本是实现双向链表是方便去进行增删改,但是不是很适合去随机查询。当然是和数组相比较。这个双向链表的顺序查找效率还是比较高的,因为是双向链表嘛!每个节点都有一个直接前驱和直接后继。前驱和后继可以认为是指针(C语言中的灵魂)。
<方法说明>
我们来看方法说明,其实很多方法还是和ArrayList的方法一样的。
add() addAll,clear(),clone(),contains(),get(),indexof(),lastIndexof(),remove(),set(),toArray()。基本上这几个方法都和ArrayList的方法使是一样的。
具体的看一些新的方法。我们分开说明
1:removeLastOccurrence(Object o)
从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
LinkedList link = new LinkedList<>(); link.add("jgdabc"); link.add("jink"); link.add("jgdabc"); System.out.println(link); link.removeLastOccurrence("jgdabc"); System.out.println(link);
相应的一样道理
2:removeFirstOccurrence(Object o)
从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
LinkedList link = new LinkedList<>(); link.add("jgdabc"); link.add("jink"); link.add("jgdabc"); System.out.println(link); link.removeFirstOccurrence("jgdabc"); System.out.println(link);
3:removeLast()
移除并返回此列表的最后一个元素。改方法在移除的同时会返回移除的元素。
link.removeFirstOccurrence("jgdabc"); System.out.println(link); String s_s = (String) link.removeLast(); System.out.println("移除元素后的集合:"+link); System.out.println("被移除的元素:"+s_s);
同样,
4:removeFirst()
移除并返回此列表的第一个元素。不再举例
5:push(E e)
将元素推入此列表所表示的堆栈。此方法就是压栈的操作。
该方法的效果等同于addFirst()
对应还有
6:pop(E e)
出栈,此方法等效于removeFirst()
link.push("jgdabc"); System.out.println(link); link.pop(); System.out.println(link);
7:pollLast()
获取并移除此列表的最后一个元素;如果此列表为空,则返回 null
8:pollFirst()
获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
9:poll()
获取并移除此列表的头(第一个元素)
String s_ = (String) link.pollLast(); System.out.println(s); String s_1 = (String) link.pollFirst(); System.out.println(s_1); String s_2 = (String) link.poll(); System.out.print(s_2);
10:peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
11:peekFirst()
获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
12:peek()
获取但不移除此列表的头(第一个元素)。
String s_3 = (String) link.peekFirst(); System.out.println(s_3); String s_4 = (String) link.peekLast(); System.out.println(s_4); String s_5 = (String) link.peek(); System.out.println(s_5);
13:offerLast(E e)
在此列表末尾插入指定的元素。
14:offerFirst(E e)
在此列表的开头插入指定的元素。
15:offer(E e)
将指定元素添加到此列表的末尾(最后一个元素)。
boolean flag_f= link.offerFirst("jgdabc"); System.out.println(flag_f); System.out.println(link); boolean baby = link.offerLast("baby"); System.out.println(baby); System.out.println(link); boolean come_on = link.offer("come on"); System.out.println(come_on); System.out.println(link);
14: Iterator<E> descendingIterator()
返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
具体的我们举个例子,看看这个逆向迭代器的使用,后面还会总结迭代方法
Iterator iterator = link.descendingIterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); }
vector已经废弃,不再叙述。至于为什么现在基本不用了,之后会写一篇专门详细介绍
边栏推荐
- Applet output console
- 高校学生返校名单信息生成- 腾讯云场景连接器全国高校创新赛
- Resume in 2022 is dead in the sea. Don't vote. Software testing positions are saturated
- 互联网寒冬,3个月如何从功能测试进阶自动化测试?【附学习指南】
- 并发修改异常
- MySQL数据库的基本概念以及MySQL8.0版本的部署(一)
- Deploy the jar package of Ruiji takeout project on the remote server and successfully run on the PC and mobile terminal
- Self adaptive development of self defined navigation bar for wechat applet
- API策略因何成为企业数字化转型的制胜法宝?
- 【报错】ValueError: It seems that you are using the Keras 2 and you are passing both
猜你喜欢
Section 21 of Chapter 2: operators two
AutoJs学习-实现文件下载进度
融云超级群的「新能力」
leetcode:1838. 最高频元素的频数【排序 + 前缀和 + 二分 + 思维】
解决API开发痛点,Apipost和Apifox哪个更好?
Basic definition and concept of graph (II)
智能科学创新讲堂 | 自动化所何晖光: 基于视觉信息编解码的深度学习类脑机制研究
tsconfig.json在配置文件中找不到任何输入,怎么办?
Live broadcast preview │ special session of Zhihui Yunzhou "digital twin smart Park solutions"
Read the paper with me - multi model text recognition network
随机推荐
TSP (don't be afraid) dynamic planning (I'm very friendly here)
mysql 事务操作与锁机制
Kotlin basic grammar
DHCP and how DHCP works
N分钟学会分位值的计算方式
你第一篇SCI写了几个月?(第二部分)
First meet JS
Section 22 of Chapter 2: document operation 1
狂神redis笔记07
Section 16 of Chapter 2: Circular nesting of dictionaries
管正雄:基于预训练模型、智能运维的QA生成算法落地
leetcode:1838. 最高频元素的频数【排序 + 前缀和 + 二分 + 思维】
COPU名誉主席陆首群在第十七届开源中国开源世界高峰论坛上的致辞
将瑞吉外卖项目jar包部署在远程服务器并成功运行在pc和移动端
网上联系客户经理办理基金开户安全吗?
第二章第十八节:字符集和编码
大华摄像头通过GB28181协议注册EasyCVR平台的详细配置
tsconfig.json在配置文件中找不到任何输入,怎么办?
互联网寒冬,3个月如何从功能测试进阶自动化测试?【附学习指南】
JS类型转换