gpt4 book ai didi

java - 如何在泛型类中实现 Iterable<> 方法

转载 作者:行者123 更新时间:2023-11-29 03:16:06 24 4
gpt4 key购买 nike

我正在创建一个实现 Iterable 的通用类 SortedArray。我的大问题是我不知道我需要为这个特定方法返回什么,或者如果我错过了实现它的主要步骤。使用当前代码,当我在 Unix 中编译它时,我收到一个错误,指出不可转换的类型。任何可以帮助我解决此问题的反馈或信息都将不胜感激。谢谢。

public class SortedArray< T extends Comparable< T > >
extends Object
implements Iterable < T > {

private T[] internalArray;
public Iterator<T> iterator() {
return (Iterator<T>) Arrays.asList(internalArray).iterator();
}
}

最佳答案

通常,您会创建一个内部类来实现 Iterator 界面,这就是您在 iterator 中返回的内容方法。这是一个例子:

//removed extends Object. The compiler will add this info for you
public class SortedArray<T extends Comparable<T>> implements Iterable<T> {

private T[] internalArray;

private class SortedArrayIterator implements Iterator<T> {
int currentIndex;
public SortedArrayIterator() {
this.currentIndex = 0;
}
@Override
public boolean hasNext() {
return currentIndex < maxSize;
}
@Override
public T next() {
return internalArray[currentIndex++];
}
@Override
public void remove() {
for (int i = currentIndex; i < internalArray.length - 1; i++) {
internalArray[i] = internalArray[i+1];
}
}
}

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

与您的问题没有直接关系,但是在使用通用数组时几乎没有问题。确保创建此 private T[] internalArray使用正确的方法,即存储 Class<T>某处,或维护一个 Comparable[] internalArray相反,如 How to create a generic array in Java? 所示

关于java - 如何在泛型类中实现 Iterable<> 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26556074/

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