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处。这样可以减少一部分不必要的遍历

最新文章

  1. 学习Sass 的基本语法规则[Sass和compass学习笔记]
  2. 大毕设-MATLAB-滤波器的实现
  3. 带毫秒的字符转换成时间(DateTime)格式的通用方法
  4. document.querySelector和querySelectorAll方法
  5. C#中==与Equals的区别
  6. coreseek 提示 client version is higher than daemon version 解决办法
  7. 学习日记day7:代码结构规范
  8. oracle中between
  9. async 和 await 以及Action Func
  10. c# 加密/解密 哈希
  11. C++编译器默默编写并调用哪些函数
  12. request常用方法小结
  13. Python Socket,How to Create Socket Server? - 网络编程实例
  14. JSP http头消息
  15. HDU 2896 病毒侵袭 (AC自动机)
  16. IE WebDriver 因保护模式无法启动的解决 (转载)
  17. 洛谷 P1054 等价表达式 解题报告
  18. fastJson解析复杂的json字符串,经测试已经成功解析
  19. openfire接收离线消息
  20. 《代码大全》的作者Steve McConnell

热门文章

  1. linode下更换内核(debian,ubuntu,centos)
  2. Xcode5下使用纯代码构建简单的HelloWorld程序
  3. 从头认识Spring-2.3 注解装配-@autowired(3)-通过构造器方法注入
  4. BZOJ 3000(Big Number-Stirling公式求n!近似值)
  5. urllib3学习
  6. MapReduce实战(五)实现关联查询
  7. Android 编程下字库的使用
  8. 用JavaCV改写“100行代码实现最简单的基于FFMPEG+SDL的视频播放器 ”
  9. ubuntu14.04安装pycurl
  10. 用n(0)次求一个数组里面最大子数组的和(数组可以输入负数)