黑马程序员技术交流社区

标题: 怎么用List中的迭代器输出啊? [打印本页]

作者: 彭波    时间: 2013-3-17 16:32
标题: 怎么用List中的迭代器输出啊?
本帖最后由 彭波 于 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()); //这样可以正确输出了
}
}

作者: MyNameIs520    时间: 2013-3-17 16:53
本帖最后由 吴上波 于 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()方法,实现迭代,也是可行的



作者: 罗威    时间: 2013-3-17 17:10
哥们,当你DuiLie d1 = new DuiLie()(本身就已经建立了一个对象),构造函数初始化的时候又开辟了一个内存空间存储了LinkedList()对象! 内存中就有两个不同的对象了!
所以说DuiLie d1 = new DuiLie()根本就不是一个集合对象,你又怎么能用集合特有的迭代器方法呢?
能想明白不?

作者: 孙晋学    时间: 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.   }
复制代码

作者: 彭波    时间: 2013-3-18 08:47
嗯,明白了,再试试
作者: 彭波    时间: 2013-3-18 09:14
孙晋学 发表于 2013-3-17 17:11
迭代器是一个内部类,不同的集合内部定义的不同,因为数据结构不同
你既然已经通过构造方法得到了这个集合 ...

这个是正确了,谢谢
作者: 彭波    时间: 2013-3-18 09:15
吴上波 发表于 2013-3-17 16:53
class DuiLie extends LinkedList{   // DuiLie继承LinkedList
        private LinkedList li ...

用DuiLie类继承LinkedList,我试了咋么不行啊?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2