LinkedList 的get方法分析---java
2024-10-14 02:55:40
Java LinkedList.get() 获取元素
Get(int)方法的实现在remove(int)中已经涉及过了。首先判断位置信息是否合法(大于等于0,小于当前LinkedList实例的Size),然后遍历到具体位置,获得节点的业务数据(element)并返回。
方法
get(int index):返回此列表中指定位置处的元素。
getFirst():返回此列表的第一个元素。
getLast():返回此列表的最后一个元素。
indexOf(Object o):返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
lastIndexOf(Object o):返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1
public E get(int index) {
checkElementIndex(index);
return node(index).item;
}
private void checkElementIndex(int index) {
if (!isElementIndex(index))
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
/**
* Returns the (non-null) Node at the specified element index.
*/
Node<E> node(int index) {
// assert isElementIndex(index); if (index < (size >> 1)) {
Node<E> x = first;
for (int i = 0; i < index; i++)
x = x.next;
return x;
} else {
Node<E> x = last;
for (int i = size - 1; i > index; i--)
x = x.prev;
return x;
}
}
注意细节:位运算与直接做除法的区别。先将index与长度size的一半比较,如果index<size/2,就只从位置0往后遍历到位置index处,而如果index>size/2,就只从位置size往前遍历到位置index处。这样可以减少一部分不必要的遍历
最新文章
- 学习Sass 的基本语法规则[Sass和compass学习笔记]
- 大毕设-MATLAB-滤波器的实现
- 带毫秒的字符转换成时间(DateTime)格式的通用方法
- document.querySelector和querySelectorAll方法
- C#中==与Equals的区别
- coreseek 提示 client version is higher than daemon version 解决办法
- 学习日记day7:代码结构规范
- oracle中between
- async 和 await 以及Action Func
- c# 加密/解密 哈希
- C++编译器默默编写并调用哪些函数
- request常用方法小结
- Python Socket,How to Create Socket Server? - 网络编程实例
- JSP http头消息
- HDU 2896 病毒侵袭 (AC自动机)
- IE WebDriver 因保护模式无法启动的解决 (转载)
- 洛谷 P1054 等价表达式 解题报告
- fastJson解析复杂的json字符串,经测试已经成功解析
- openfire接收离线消息
- 《代码大全》的作者Steve McConnell
热门文章
- linode下更换内核(debian,ubuntu,centos)
- Xcode5下使用纯代码构建简单的HelloWorld程序
- 从头认识Spring-2.3 注解装配-@autowired(3)-通过构造器方法注入
- BZOJ 3000(Big Number-Stirling公式求n!近似值)
- urllib3学习
- MapReduce实战(五)实现关联查询
- Android 编程下字库的使用
- 用JavaCV改写“100行代码实现最简单的基于FFMPEG+SDL的视频播放器 ”
- ubuntu14.04安装pycurl
- 用n(0)次求一个数组里面最大子数组的和(数组可以输入负数)