gpt4 book ai didi

Java - 在不使用内部迭代器类的情况下实现自定义 Iterable

转载 作者:行者123 更新时间:2023-12-04 04:55:47 26 4
gpt4 key购买 nike

我有以下代码

public class SBag<Item> implements BagInterface<Item>, Iterable<Item> {

当我尝试编译时,我得到
SBag.java:12: error: SBag is not abstract and does not override abstract method
iterator() in Iterable
public class SBag<Item> implements BagInterface<Item>, Iterable<Item>{
^
where Item is a type-variable:
Item extends Object declared in class SBag

我的任务是在不使用内部迭代器类的情况下实现 Iterable,但我不确定如何执行此操作,因为我在编译时遇到该错误。我有以下方法 add()、isFull()、toArray()、isEmpty()、getCurrentSize()、remove()、clear() 和 toString()。总体目标是能够使用 for-each 循环,但我不确定如何从这里开始。

最佳答案

作为内部类的迭代器看起来像这样:

class MyIterable implements Iterable {
public Iterator iterator() {
return new Iterator() {
public boolean hasNext() {...}
public Object next() {...}
void remove();
}
}
}

相比之下,不是内部类的 Iterator 可能看起来更像:
class MyIterable implements Iterable {
public Iterator iterator() {
return new MyIterator();
}
}

class MyIterator {
public boolean hasNext() {...}
public Object next() {...}
void remove();
}

这是从技术上讲不是内部类的另一种方式,但是如果你这样说,有些人会看你很有趣:
class MyIterable implements Iterable {
public Iterator iterator() {
return new MyIterator();
}

static class MyIterator {
public boolean hasNext() {...}
public Object next() {...}
void remove();
}
}

关于Java - 在不使用内部迭代器类的情况下实现自定义 Iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16763544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com