【发布时间】:2017-09-03 08:30:40
【问题描述】:
我创建了一个 LinkedList,它有一个实现接口 Iterator<E> 的 LinkedListIterator。
接口有以下功能:
Next();
hasNext();
我正在尝试使用返回 Iterator<E> 对象的迭代器函数来遍历我的 LinkedList。这是我的功能:
public Iterator<E> iterator(int stop) {
if(size==0){
throw new UnsupportedOperationException("IMPLEMENT THIS METHOD");
}
Iterator<E> result = new LinkedListIterator();
for(int i = 0; i<stop; i++){
result.next();
}
return result;
}
我还有一个通过迭代器模拟运行的测试类:
public class TestLinkedList {
public static void main(String[] args) {
//StudentInfo.display();
LinkedList<Integer> xs;
final int MAX_SIZE = 5;
for (int stop = 0; stop<MAX_SIZE; stop++) {
for (int start = 0; start<=stop; start++) {
System.out.println("start="+start+", stop="+stop);
xs = new LinkedList<Integer>();
for (int i=0; i<MAX_SIZE; i++) {
xs.addLast(i);
}
System.out.println(xs);
Iterator<Integer> i = xs.iterator(stop);
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
}
}
这是我对迭代器的另一个实现:
public Iterator<E> iterator(int start, int stop) {
if(size == 0){
throw new UnsupportedOperationException("IMPLEMENT THIS METHOD");
}
Iterator<E> result = new LinkedListIterator();
for(int i = start; i<stop; i++){
result.next();
}
return result;
}
当我运行模拟时,我得到以下结果:
start=0, stop=0
{0,1,2,3,4}
0
1
2
3
4
start=0, stop=1
{0,1,2,3,4}
1
2
3
4
start=1, stop=1
{0,1,2,3,4}
1
2
3
4
start=0, stop=2
{0,1,2,3,4}
2
3
4
start=1, stop=2
{0,1,2,3,4}
2
3
4
start=2, stop=2
{0,1,2,3,4}
2
3
4
start=0, stop=3
{0,1,2,3,4}
3
4
start=1, stop=3
{0,1,2,3,4}
3
4
start=2, stop=3
{0,1,2,3,4}
3
4
start=3, stop=3
{0,1,2,3,4}
3
4
start=0, stop=4
{0,1,2,3,4}
4
start=1, stop=4
{0,1,2,3,4}
4
start=2, stop=4
{0,1,2,3,4}
4
start=3, stop=4
{0,1,2,3,4}
4
start=4, stop=4
{0,1,2,3,4}
4
什么时候我应该得到以下结果:
// start=0, stop=0
// {0,1,2,3,4}
// 0
// start=0, stop=1
// {0,1,2,3,4}
// 0
// 1
// start=1, stop=1
// {0,1,2,3,4}
// 1
// start=0, stop=2
// {0,1,2,3,4}
// 0
// 1
// 2
// start=1, stop=2
// {0,1,2,3,4}
// 1
// 2
// start=2, stop=2
// {0,1,2,3,4}
// 2
// start=0, stop=3
// {0,1,2,3,4}
// 0
// 1
// 2
// 3
// start=1, stop=3
// {0,1,2,3,4}
// 1
// 2
// 3
// start=2, stop=3
// {0,1,2,3,4}
// 2
// 3
// start=3, stop=3
// {0,1,2,3,4}
// 3
// start=0, stop=4
// {0,1,2,3,4}
// 0
// 1
// 2
// 3
// 4
// start=1, stop=4
// {0,1,2,3,4}
// 1
// 2
// 3
// 4
// start=2, stop=4
// {0,1,2,3,4}
// 2
// 3
// 4
// start=3, stop=4
// {0,1,2,3,4}
// 3
// 4
// start=4, stop=4
// {0,1,2,3,4}
// 4
我不明白我的迭代器函数中缺少什么,有人可以帮我解决这个问题吗?
【问题讨论】:
-
提示:你没有使用
start -
@VivekChavda 该函数仅在我想要的变量 stop 上运行。这是老师布置的作业。他希望我先用停止参数实现迭代器。使用他自己写的测试
-
请看我有两种迭代器@VivekChavda 的实现,一种带有开始,一种带有开始,停止
-
啊,谢谢,我误会了。我可以在这里看到问题,您的停止功能基本上是启动功能。我会发布您编写的代码并可以修改
-
如果您能帮助我,那就太好了,非常感谢,我只需要停止功能的帮助,我可以自己完成启停
标签: java linked-list listiterator