在 Java 中使用带有链表的迭代器
我创建了一个名为“SList”的链表类,它允许创建一个空链表。 “insertFront”方法在列表的前面插入一个对象并增加大小。下面,在主类中,我创建了一个 SList 对象并向列表添加了两个字符串。我想打印这份清单。我尝试创建一个从 java.util 导入的迭代器对象,但编译器在“Iterator”下给了我一个红色下划线。为什么我会收到此错误?我应该如何打印这个链接列表?
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();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我对你的代码有点困惑。鉴于您当前的实现,没有任何方法可以从
SList
类返回Iterator
对象。如果您希望基于 Java Collections 框架进行实现,则应在代码中实现
Collection
接口,如下所示:
是参数化类型这使得你的类类型安全。如果实现Collection
接口,则需要实现多个方法,其中一个方法将返回Iterator
。如果您选择不使用 Java Collections 框架,也很容易做到,您只需要创建自己的所有方法即可。
可以在这里找到一个很棒的泛型教程(如果您不想使用集合框架)位于 Java 泛型教程页面
还可以在此处找到关于 Collections 框架的另一个精彩教程 集合的 Java 教程页面
玩得开心!
I'm a bit confused by your code. Given your current implementation, there is no method that will return an
Iterator
object from yourSList
class.If you would like to base your implementation off of the Java Collections framework, you should implement the
Collection
interface in your code as such:The
<E>
is a parameterized type that makes your class type-safe. If you implement theCollection
interface, you will be required to implement several methods, among them is a method that will return anIterator<E>
.If you choose not to use the Java Collections framework, it is just as easy to do, you'll just need to create all of your own methods.
A great tutorial for generics (if you don't want to use the Collections framework) can be found here at the Java Tutorials page for generics
Another great tutorial for the Collections framework can also be found here at the Java Tutorials page for Collections
Have fun!