A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭波 中级黑马   /  2013-3-17 16:32  /  2101 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 彭波 于 2013-3-18 08:48 编辑

/* 使用LinkedList模拟一个队列数据结构
    队列:先进先出  */
import java.util.*;
class DuiLie
{
private LinkedList link;

DuiLie()
{
  link = new LinkedList();
}

public void myAdd(Object obj)
{
  link.addFirst(obj);
}

public Object myGet()
{
  return link.removeLast();
}

public boolean isNull()
{
  return link.isEmpty() ;
}
}
class LinkedListTest
{
public static void sop(Object obj)
{
  System.out.println(obj);
}

public static void main(String[] args)
{
  DuiLie d1 = new DuiLie();
  d1.myAdd("java01");
  d1.myAdd("java02");
  d1.myAdd("java03");
  d1.myAdd("java04");
  
  /*
  Iterator it = d1.iterator(); //这种迭代方式是错误的,该怎么迭代输出啊???
  while(it.hasNext())
  {
   sop(it.next());
  }
  */

  
  while(!d1.isNull())
   sop(d1.myGet()); //这样可以正确输出了
}
}

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-18 06:21

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

6 个回复

正序浏览
彭波 中级黑马 2013-3-18 09:15:51
7#
吴上波 发表于 2013-3-17 16:53
class DuiLie extends LinkedList{   // DuiLie继承LinkedList
        private LinkedList li ...

用DuiLie类继承LinkedList,我试了咋么不行啊?
回复 使用道具 举报
孙晋学 发表于 2013-3-17 17:11
迭代器是一个内部类,不同的集合内部定义的不同,因为数据结构不同
你既然已经通过构造方法得到了这个集合 ...

这个是正确了,谢谢
回复 使用道具 举报
嗯,明白了,再试试
回复 使用道具 举报
迭代器是一个内部类,不同的集合内部定义的不同,因为数据结构不同
你既然已经通过构造方法得到了这个集合,实际还得使用传入集合的迭代器
  1. public Iterator myIterator(){
  2.   return link.iterator();
  3. }
复制代码
在main方法中调用
  1.   Iterator it = d1.myIterator();
  2.   while(it.hasNext())
  3.   {
  4.    sop(it.next());
  5.   }
复制代码

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
哥们,当你DuiLie d1 = new DuiLie()(本身就已经建立了一个对象),构造函数初始化的时候又开辟了一个内存空间存储了LinkedList()对象! 内存中就有两个不同的对象了!
所以说DuiLie d1 = new DuiLie()根本就不是一个集合对象,你又怎么能用集合特有的迭代器方法呢?
能想明白不?
回复 使用道具 举报
本帖最后由 吴上波 于 2013-3-17 17:16 编辑

class DuiLie extends LinkedList{   // DuiLie继承LinkedList
        private LinkedList link;

        DuiLie() {
                link = new LinkedList();
        }

        public void myAdd(Object obj) {
                link.addFirst(obj);
        }

        public Object myGet() {
                return link.removeLast();
        }

        public boolean isNull() {
                return link.isEmpty();
        }
}
不太明白楼主的意思,但是DuiLie类继承LinkedList是一定可以使用迭代器的。
或者楼主在DuiLie中自定义一个iterator()方法,实现迭代,也是可行的


评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马