首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 集合系列(四)—— ListIterator 源码分析

现象与问题 add() 方法在迭代器位置前面添加一个新元素 next() 与 previous() 返回越过对象 set() 方法替换next() previous() 方法返回上一个元素...首先我们来分析 LinkedList listIterator() listIterator(int index) 方法获取 ListIterator 迭代器过程。...next.prev 节点 55 * 将处理目标储到 lastReturned 变量中 56 * 然后将当前 next.prev 节点保存起来,用于下一次迭代处理...next() 处理next 节点,返回 next.item previous() 处理next.prev 节点 返回 next.prev.item remove() 处理是 lastReturned...在 github 上建了一个 repository ,Java Core Knowledge Tree,各位看官若是喜欢请个star,以示鼓励,谢谢。

69520
您找到你想要的搜索结果了吗?
是的
没有找到

java集合源码分析(四):LinkedList「建议收藏」

这是关于 java 集合类源码第四篇文章。...往期文章: java集合源码分析(一):Collection 与 AbstractCollection java集合源码分析(二):List与AbstractList java集合源码分析(三):ArrayList...forEach 由于 LinkedList 没有重写 forEach()方法,使用 forEach()仍然还是沿用 Iterable 接口提供增强 for 循环实现,实际上编译以后还是迭代器,也就是说...modCount赋成员变量 expectedModCount,因此,在迭代器里调用非迭代器自带结构性操作方法,都会在第二次并发修改检测时候抛出异常。...; } } return -1; } 7.clear LinkedList clear()就是把所有节点引用关系清除,注释的话来说: Clearing all

36920

jdk源码分析之List--常用实现类分析与对比

java编码中,集合类算是我们最多,比如HashMap,TreeMap,ArrayList,LinkedList等等,使我们最常用(并发包中实现暂不做分析),按照顶级接口分析,有两种,...中间用到了一些扩容和数组复制方法也都贴了出了,接下来对其逐步详细分解。...Node prev; Node(Node prev, E element, Node next) { this.item = element; this.next = next...linkFirst方法中f暂存首节点first,然后根据入参e新建一个prev指针null,next指针为f节点,然后把新节点赋值first,如果f为null(之前没有元素),last指针也指向新节点...对于前者,仍然只需要新建一个Node改变前后指针指向,而后者会发生数组复制,将原数组所有元素拷贝到自己从第二个位开始,长度为size对应位置,然后将入参赋值0号位置,出了数组复制,还可能出现扩容,

22720

Java笔记-Previous方法反向遍历没反应问题

前言  今天在学习集合分支List特有迭代器ListIterator时遇到两个疑惑,这是第一个,由于角度比较奇怪,教学视频里也没有提及,在度娘一番攀谈交心后,我仍是一知半解,但这么巧是,在第二个疑惑中我找到了它们共通之处...这里先为大家引入一下ListIterator常用方法 E next():返回迭代中下一个元素 boolean hasNext():如果迭代具有更多元素,则返回true E previous():返回列表中上一个元素...hasPrevious()这两个方法,根据方法描述,我们很容易理解为就是 从集合最后一位开始返回前一个元素 以及 从最后一位开始判断前面是否存在元素,于是在测试学习这个方法时我写出了这样代码 以下附上代码及图示..."Java" "World" "Hello" 这三个字符串,可预想事物总是美好,现实是残酷哈哈哈,看如下运行图~ 分析问题  在学习过程中,使用E next()boolean hasNext...()来进行同样操作是可以正常依次输出 "Hello" "World" "Java" 这三个字符串 import java.util.ArrayList; import java.util.List;

1.2K10
领券