gpt4 book ai didi

Java - 创建返回迭代器的方法

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

我当前正在创建一个名为 ArraySet 的类,它实现 Set 接口(interface)。我应该创建一个以自然顺序返回值的迭代器方法,其中时间复杂度为 iterator(): O(1); hasNext(): O(1);下一个():O(1);所需空间:O(1)。该方法应该返回一个执行此操作的迭代器。我对这种方法的工作方式以及我到底想要什么感到困惑。因为它是一个方法,所以我不应该在其中创建 hasNext() 或 next() 方法,并且我要返回什么迭代器?我尝试只返回一个迭代器,但它是抽象的并且无法实例化。我可以理解创建一个新的迭代器类,但无法理解它如何以方法形式工作。基本上,该方法目前看起来是这样的,但就像我所说的,我什至不知道要在其中放入什么。另外,如果有帮助的话,ArraySet 类中有两个字段,int size(数组中元素的数量)和 T[] 元素(存储元素的数组,严格按照自然顺序排列,尽管我什至不知道)确定如何执行自然顺序)

public Iterator<T> iterator() {
return null;
}

最佳答案

Because it's a method I shouldn't be able to create hasNext(), or next() methods inside of it, and what Iterator am I trying to return?

不可以,方法不能在 Java 中定义其他方法。您是否正在考虑定义 Iterator 的匿名子类?这可以工作。

您需要创建一个具体的Iterator实现。然后,类中的 iterator() 方法将实例化并返回此实现的新实例。

为了清楚起见,这就是该事物的骨架。由您来实现 hasNext()next() 方法!

public class ArraySet<T> implements Iterable<T> {

// snip...

@Override
public Iterator<T> iterator() {
return new MyIterator();
}

private class MyIterator implements Iterator<T> {

@Override
public boolean hasNext() {
// your logic here
}

@Override
public T next() {
// your logic here
}
}
}

关于Java - 创建返回迭代器的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787829/

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