【java】帮看一个LinkedList的小代码。万分感谢!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【java】帮看一个LinkedList的小代码。万分感谢!!相关的知识,希望对你有一定的参考价值。

/*
使用LinkedList模拟一个堆栈或者队列数据结构。
堆栈:先进后出 如同一个杯子。
队列:先进先出 First in First out FIFO 如同一个水管。

*/
import java.util.*;
class DuiLie

// public LinkedList link = new LinkedList();
// public ListIterator li = link.listIterator();
public LinkedList link;
public ListIterator li;
DuiLie()

link = new LinkedList();
li = link.listIterator();

public void add(Object obj)

link.offerFirst(obj);

public ListIterator listIterator()

return li;

public boolean hasNext()

return li.hasNext();

public Object next()

return li.next();

public boolean isEmpty()

return link.isEmpty();


class Demo

public static void main(String[] args)

DuiLie dl = new DuiLie();
dl.add("java01");
dl.add("java02");
dl.add("java03");
ListIterator li = dl.listIterator();
sop( li.next() );

public static void sop(Object obj)

System.out.println(obj);



完全搞不懂为什么会出现ConcurrentModificationException
请高手赐教
万分感谢!!

你好,我帮你找到了出现ConcurrentModificationException的原因。
下面我们分析下你的构造方法:
DuiLie()

link = new LinkedList();
li = link.listIterator(); //注意这里。

当你对象在创建的时候,li就已经被初始化好了。
后面的add时,link会改变,但是li已经不会在变化了。所以出现了上面提到的异常。
修改办法就是修改add方法:
public void add(Object obj)
link.offerFirst(obj);
li = link.listIterator();


但是你的逻辑(设计)还是有问题的,我意思你自己在想想,那样才是自己的东西,我就不多说了。
参考技术A DuiLie dl = new DuiLie();里面有生成li = link.listIterator();
这时li是空的
你后来得到的就是他 不管你add几个

以上是关于【java】帮看一个LinkedList的小代码。万分感谢!!的主要内容,如果未能解决你的问题,请参考以下文章

高手帮看一下搜索代码,搜索数字及字母时没问题,输入中文搜索就是乱码。

java操作oracle程序,高手帮看下这程序?

在运行JAVA程序时出错,大家帮看一下是怎么回事,最好懂hadoop编程~~

Java中arraylist和linkedlist源代码分析与性能比較

Java使用LinkedList来模拟一个队列(先进先出的特性)

零基础学Java—LinkedList集合(四十)