- package com.example.demo;
-
-
- import java.util.Iterator;
- import java.util.LinkedList;
-
- public class TestLinkedList {
- public static void main(String[] args) {
- LinkedList linkedList = new LinkedList(); //双向链表
- linkedList.add(11);
- linkedList.add(22);
- linkedList.add(33);
-
- //nextIndex : 0 next 第一号节点元素
- //lastReturned 记录返回值的对象
- // private int expectedModCount = modCount; 将记录链表长度发生变化次数的记录值赋值给 期望值 -> 程序在初始化的时候,那么他们一定是相等的
- Iterator iterator = linkedList.iterator();
- while (iterator.hasNext()){
- linkedList.add(10);
- System.out.println(iterator.next());
- }
-
- System.out.println(linkedList);
- }
- }
在查询的时候进行插入,报错如下:

因为在linklist初始化的时候,期望值expectedModCount和真实值modCount是一样的,而进行add()方法以后就不一样了。
如下图,只改变了modCount的值。

- package com.example.demo;
-
- import java.util.LinkedList;
- import java.util.ListIterator;
-
- public class TestLinkedList {
- public static void main(String[] args) {
- LinkedList linkedList = new LinkedList(); //双向链表
- linkedList.add(11);
- linkedList.add(22);
- linkedList.add(33);
-
- //nextIndex : 0 next 第一号节点元素
- //lastReturned 记录返回值的对象
- // private int expectedModCount = modCount; 将记录链表长度发生变化次数的记录值赋值给 期望值 -> 程序在初始化的时候,那么他们一定是相等的
- ListIterator iterator = linkedList.listIterator();
- while (iterator.hasNext()){
- //hashNext 遍历链表长度的次数
- iterator.add(10);
- System.out.println(iterator.next());
- }
-
-
- System.out.println(linkedList);
- }
- }
结果如下:

这个add方法会对期望值和真实值同时进行修改,所以无异常。
