Java 创建阵列过滤器<;E>;等级
我正在创建一个ArraySetterator类,但在使用next()方法时遇到了问题。 我做了一些研究,但似乎什么都不管用。我相信这是一段简单的代码,但我似乎无法理解Java 创建阵列过滤器<;E>;等级,java,Java,我正在创建一个ArraySetterator类,但在使用next()方法时遇到了问题。 我做了一些研究,但似乎什么都不管用。我相信这是一段简单的代码,但我似乎无法理解 private class ArraySetIterator <E> implements Iterator <E> { private ArraySet<E> set; private int index = 0; public ArraySetIterat
private class ArraySetIterator <E> implements Iterator <E> {
private ArraySet<E> set;
private int index = 0;
public ArraySetIterator(ArraySet<E> set) {
this.set = set;
}
public boolean hasNext() {
return (index + 1) < set.size();
}
public E next() {
???
}
public void remove() {
set.remove(index);
}
}
私有类ArraySetIterator实现迭代器{
专用阵列集;
私有整数指数=0;
公共阵列设置器(阵列设置集){
this.set=set;
}
公共布尔hasNext(){
返回(索引+1)
next()
应增加索引并返回当前元素。此外,如果没有更多的元素可以迭代,它应该抛出NoSuchElementException
。这是有效的:
public E next() {
return set.get(index++);
}
您可能还需要考虑检查hasNext()
是否为真
编辑:根据您的评论,您的ArraySet
似乎只实现了集合
。因此,您不能使用.get()
。我认为你需要做这样的事情:
private class ArraySetIterator <E> implements Iterator <E> {
private E[] set;
private int index = 0;
public ArraySetIterator(ArraySet<E> set) {
this.set = (E[]) set.toArray();
}
public boolean hasNext() {
return (index + 1) < set.length;
}
public E next() {
if(hasNext) {
return set[index++];
} else {
throw new NoSuchElementException();
}
}
public void remove() {
throw new UnsupportedOperationException();
}
}
私有类ArraySetIterator实现迭代器{
专用E[]集;
私有整数指数=0;
公共阵列设置器(阵列设置集){
this.set=(E[])set.toArray();
}
公共布尔hasNext(){
返回(索引+1)
谢谢!“我以前很接近,但现在说得通了。”丹恩斯:没问题。确保对任何您认为有用的答案进行投票,并接受您认为最好的答案。轻微问题-尝试编译并出现错误“找不到符号-方法get(int)”。@Dan_ENZ是您正在使用的ArraySet
的实现吗?是你自己写的吗?