作业:请引导我帮助引导我,不要发布完整的代码
我的老师让我们实现一个LinkedList作为家庭作业。这是类shell的标题:
public class LinkedList<T> implements Iterable<T>, Iterator<T>
注意,他正在实现Iterable和Iterator接口。然后我明白了我需要在类中实现迭代器()、hasNext()、next()和remove()方法。但让我困惑的是,他没有将迭代器接口所需的方法放在单独的内部类中。以下所有方法都在LinkedList类中定义:
/*
* (non-Javadoc)
*
* @see java.lang.Iterable#iterator()
*/
@Override
public Iterator<T> iterator()
{
return null;
}
/*
* (non-Javadoc)
*
* @see java.util.Iterator#hasNext()
*/
@Override
public boolean hasNext()
{
return false;
}
/*
* (non-Javadoc)
*
* @see java.util.Iterator#next()
*/
@Override
public T next()
{
return null;
}
/*
* (non-Javadoc)
*
* @see java.util.Iterator#remove()
*/
@Override
public void remove()
{
}
迭代器()方法不应该返回如下内容:
public Iterator<T> iterator()
{
return new MyClassIterator(front);
}
其中,MyClassificator()是用hasNext()、next()和
remove()方法定义的。我错过了什么?
这确实是一条评论,但必须作为答案发布,因为它太长,很难以评论格式阅读。
在使用Iterable实现迭代器时要非常小心。可以同时为同一个Iterable运行多个迭代器。下面是一个测试程序,演示了这一点:
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> myList = Arrays.asList(new String[] { "aaa", "bbb", "ccc" });
Iterator<String> iter1 = myList.iterator();
System.out.println("iter1: " + iter1.next());
System.out.println("iter1: " + iter1.next());
Iterator<String> iter2 = myList.iterator();
for (String s; iter2.hasNext();) {
s = iter2.next();
System.out.println("iter2: " + s);
}
System.out.println("iter1.hasNext(): " + iter1.hasNext());
System.out.println("iter2.hasNext(): " + iter2.hasNext());
System.out.println("iter1: " + iter1.next());
}
}
它打印:
iter1: aaa
iter1: bbb
iter2: aaa
iter2: bbb
iter2: ccc
iter1.hasNext(): true
iter2.hasNext(): false
iter1: ccc
使用Iterable实现迭代器的风险在于,最终两个迭代器都会有一个迭代器状态,而推进iter2会影响iter1。
当然,干净的解决方案是在您的Iterable
实现中有一个私有类,它实现了Iterator
,并为每个iterator()
调用创建一个新的实例。iter1
和iter2
然后引用不同的对象,对iter2
状态的更改不会影响iter1
。
问题内容: 您如何在Java中以及在何处定义自己的Exception层次结构? 我的主要问题涉及必须定义Exception类的包位置。 我们是否为异常创建一个特殊的程序包并将所有类放入其中? 问题答案: 我将此作为一般规则。 在适当的地方,使用预定义的Java异常。例如,如果您的代码有某种I / O错误,则抛出IOException是可以的。 仅当需要在try / catch块中区分两个异常时,才
本文向大家介绍Java自定义数组列表的实现操作,包括了Java自定义数组列表的实现操作的使用技巧和注意事项,需要的朋友参考一下 主要目的: 解决ArrayList 类不能改变大小的问题,主要实现数组列表动态调整大小。 1、数组类型如何选择?由于我们不清楚数组中具体存入什么类型的数据, 我们可以声明一个对象Object [ ] ,这样,数组列表就可以存储任何类型的数据了。 2、泛型<> :如果定义的
本人一直很想自己造个 jQuery 的小库,第一是满足下自己,第二是去体验下 jQuery 内部的基情。
本文向大家介绍我们如何在Java中实现自定义HashSet?,包括了我们如何在Java中实现自定义HashSet?的使用技巧和注意事项,需要的朋友参考一下 HashSet实现了不允许重复值的Set接口。HashSet不是同步的,也不是线程安全的。当我们可以向HashSet添加任何重复元素时,add()方法返回false,并且不允许向HashSet添加重复元素。 语法 在下面的示例中,我们可以实现自
我想编写自己的定位器来访问元素。WebDriver的API目前提供了八个定位器,允许按id、名称属性、标记名、完整或部分链接文本、XPath、类名和css选择器检索元素。然而,这些默认定位器现在对我来说还不够,因为我必须通过一个新属性访问元素。让我举个例子,这样你就能明白我在这里真正想要的是什么。 示例:选择您的用户名: 现在,我想编写一段代码,以便使用myLocator定位器访问用户名按钮,如:
本文向大家介绍Java如何实现自定义异常类,包括了Java如何实现自定义异常类的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java如何实现自定义异常类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 自定义异常类步骤 创建一个类继承异常父类Exception 在具体的实现方法首部抛出异常类(自己创建的那个类),throws的