Java 与实现Iterable相关的对象类型有哪些
在过去的两天里,我在实现Iterable接口的整个过程中迷失了方向 我读过一些博客之类的东西,发现要实现Iterable,我显然需要一个函数,返回名为Iterator()的迭代器,但在整个实现过程中迷失了方向 现在,我读到的是我需要Java 与实现Iterable相关的对象类型有哪些,java,generics,types,interface,iterator,Java,Generics,Types,Interface,Iterator,在过去的两天里,我在实现Iterable接口的整个过程中迷失了方向 我读过一些博客之类的东西,发现要实现Iterable,我显然需要一个函数,返回名为Iterator()的迭代器,但在整个实现过程中迷失了方向 现在,我读到的是我需要 public class MyCollection<E> implements Iterable<E>{ public Iterator<E> iterator() { return new MyIter
public class MyCollection<E> implements Iterable<E>{
public Iterator<E> iterator() {
return new MyIterator<E>();
}
}
公共类MyCollection实现了Iterable{
公共迭代器迭代器(){
返回新的MyIterator();
}
}
然后我需要
public class MyIterator <T> implements Iterator<T> {
public boolean hasNext() {
//implement...
}
public T next() {
//implement...;
}
public void remove() {
//implement... if supported.
}
}
公共类MyIterator实现迭代器{
公共布尔hasNext(){
//实施。。。
}
公共交通工具{
//实施。。。;
}
公共空间删除(){
//实现…如果支持。
}
}
现在,我不明白的是E和T应该是什么类型。
哪些必须与我所迭代的内容相关,哪些可以/必须是泛型的
我已经试过了
public Iterator<SimpleHashtable.TableEntry> iterator() {
return new TableEntryIterator<SimpleHashtable.TableEntry>();
}
公共迭代器迭代器(){
返回新的TableEntryInterator();
}
但是我得到了类型不匹配:无法从SimpleHashtable.TableEntry迭代器转换为迭代器错误
Plox帮助guizeE
和T
是泛型类型参数,如果您的实现是泛型的,则将它们保留为参数。(还可以编写一个类来修复一个或多个参数,例如MyIntegerCollection implements Iterator
)
在这种情况下,E
代表“元素”(集合中元素的类型),而T
代表“类型”(迭代器返回的对象类型)。对如何命名它们没有内在的要求,但这些是集合和迭代器的约定
你的方法大体上是正确的。但是,请注意,如果迭代器是集合的内部类(这是常见的),则不应引入新的泛型参数;只需使用集合声明中相同的E
至于您得到的具体错误,我们需要查看该代码。很可能,您忘记声明tablentyerator实现迭代器tablentyerator的定义在哪里?我还没有写完它。错误是因为它不完整吗?我不知道你是否没有向我们展示…似乎你的类TableEntryIterator没有实现迭代器。@almasshaikh它没有实现迭代器
它是扩展还是实现的?@DominikDitoIvosevic在这种情况下,应该是实现
。我的头在泛型类型边界的其他地方。