【问题标题】:Using an iterator with a linked list in Java在 Java 中使用带有链表的迭代器
【发布时间】:2011-08-26 03:41:59
【问题描述】:

我创建了一个名为“SList”的链表类,它允许创建一个空链表。方法“insertFront”在列表的前面插入一个对象并增加大小。下面,在主类中,我创建了一个 SList 对象并将两个字符串添加到列表中。我想打印这份清单。我试图创建一个从 java.util 导入的迭代器对象,但编译器在“迭代器”下给了我一个红色下划线。为什么我会收到此错误?我应该如何打印这个链表?

public class SList 
{
private SListNode head;
private int size; //number of items in the list

public SList() //constructor, empty list
{
    head = null;
    size = 0;
}
public void insertFront(Object item)
{
    head = new SListNode(item, head);
    size++;
}

}

import java.util.*;

public class LinkMain 
  {
        public static void main(String[] args)
    {
    String apples = "apples";
    String oranges = "oranges";

    SList x = new SList();

    x.insertFront(apples);
    x.insertFront(oranges);

    Iterator iter = x.Iterator();






}

}

【问题讨论】:

    标签: java iterator linked-list


    【解决方案1】:

    我对你的代码有点困惑。鉴于您当前的实现,没有任何方法可以从您的 SList 类返回 Iterator 对象。

    如果您希望基于 Java 集合框架的实现,您应该在代码中实现 Collection 接口,如下所示:

    public class SList<E> implements Collection<E> {
        //override methods here
    }
    

    &lt;E&gt; 是一种参数化类型,它使您的类类型安全。如果您实现Collection 接口,您将需要实现几个方法,其中一个方法将返回Iterator&lt;E&gt;

    如果您选择不使用 Java Collections 框架,也很容易做到,您只需创建自己的所有方法。

    可以在at the Java Tutorials page for genericsat the Java Tutorials page for generics 找到一个很棒的泛型教程(如果您不想使用 Collections 框架)

    另一个很棒的 Collections 框架教程也可以在这里找到at the Java Tutorials page for Collections

    玩得开心!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      相关资源
      最近更新 更多