JAVA容器LinkedList的get()源码分析

本文详细解析LinkedList容器中get方法的工作原理,包括检查下标合法性、元素定位算法,以及isElementIndex和node方法的实现细节。

上次说完了LinkedList的LinkLast和addLast方法,现在我们来讲讲LinkedList容器中的get方法:

通过源码可以看到,LinkedList容器get方法的实现非常简单,首先调用了checkElementIndex方法,根据名字也可以看出来,这是一个检查下标是否合法的方法

Ctrl+左键让我们看看checkElementIndex的方法是如何实现的?

点进去我们会看到里面有一个判断,判断里调用了isElementIndex方法,我们可以判断出这个方法返回的是布尔值,如果返回true就说明下标合法,如果是false就会抛出下标越界异常我们再点进isElementIndex方法进去看看,isElementIndex做了一个简单的判断,判断下标是否大于等于0并且小于容器的长度,size是LinkedList的成员变量,代表的是容器的长度

 

然后我们再回来看get方法下边有一个node方法,传入了我们的下标,然后调用了成员变量item,这个item代表的是所指定位置的元素,我们点进node方法看看:
通过源码我们可以看到node方法有一个if-else判断,

下标小于容器长度除以2时,就说明下标所指的节点对象离头节点较近,声明x节点指向头节点,然后通过for循环从左往右找,然后返回对应下标的节点对象

(此时可能有人没看懂右移1是什么意思?学过C语言的应该知道,左移一位代表乘以2,右移1位代表除以2)

下标大于等于容器长度除以2,就说明下标所指的节点对象离尾节点较近,声明x节点指向尾节点,然后通过for循环从右往左找,然后返回对应下标的节点对象

 最后返回指定位置节点对象过后,调用节点对象的item成员变量返回这个节点的元素值,item代表元素

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值