Java数组树迭代器
我正在尝试编写一个使用数组实现树的类,我需要一些帮助来编写一个迭代器方法,该方法返回树中存储的元素的迭代器 解决方案:Java数组树迭代器,java,tree,iterator,Java,Tree,Iterator,我正在尝试编写一个使用数组实现树的类,我需要一些帮助来编写一个迭代器方法,该方法返回树中存储的元素的迭代器 解决方案: public Iterator<E> iterator() { return new Iterator<E>() { private int index = 0; public boolean hasNext() { return index < ArrayTree.this.siz
public Iterator<E> iterator() {
return new Iterator<E>() {
private int index = 0;
public boolean hasNext() {
return index < ArrayTree.this.size();
}
public E next() {
if (!hasNext()) {
return new NoSuchElementException();
}
return ArrayTree.this.tree[index++];
}
public void remove() {
return new OperationNotSupported();
}
}
}
公共迭代器迭代器(){
返回新的迭代器(){
私有整数指数=0;
公共布尔hasNext(){
返回索引
如果不仔细检查您的实现,一个非常简单的实现可能是
public Iterator<E> iterator() {
return new Iterator<E>() {
private int index = 0;
public boolean hasNext() {
return index < ArrayTree.this.size();
}
public E next() {
if (!hasNext()) {
return new NoSuchElementException();
}
return ArrayTree.this.tree[index++];
}
public void remove() {
return new OperationNotSupported();
}
}
}
公共迭代器迭代器(){
返回新的迭代器(){
私有整数指数=0;
公共布尔hasNext(){
返回索引
有两种方法,但是如果您的ArrayTree类实现了Iterable和Iterator接口,您就可以开始了。您需要迭代什么?给定某个节点,您希望迭代其直接子代还是所有子代?前者很简单,后者有点复杂。迭代顺序应该是什么?还有,人们是如何向你的ArrayTree类添加节点的呢?关于你的问题:如果你发现答案很有用(在你发布(并收到了对8个后续问题的答案)时,你应该对答案进行投票,而不是删除整个问题和答案。这不是答案,是吗?他仍然需要在iterator()方法中实现迭代逻辑。简单地将类标记为实现Iterable
是没有帮助的,这是一个答案。这是家庭作业。他需要试一试。当他按照我的建议去做的时候,他会看到一些关于必须实现的方法的东西,也许灯会亮起来。否则,他可以问一个更具体的问题。