Java 创建可编辑的列表
我试图制作一个可编辑的列表,但我被困在迭代器部分 这是我的密码Java 创建可编辑的列表,java,Java,我试图制作一个可编辑的列表,但我被困在迭代器部分 这是我的密码 import java.util.Iterator; public class MappableList<T> implements Iterable<T> { T list[]; public MappableList(T arg1, T arg2, T arg3, T arg4) { list = (T[]) new Object[4]; list[0] = arg1; l
import java.util.Iterator;
public class MappableList<T> implements Iterable<T> {
T list[];
public MappableList(T arg1, T arg2, T arg3, T arg4) {
list = (T[]) new Object[4];
list[0] = arg1;
list[1] = arg2;
list[2] = arg3;
list[3] = arg4;
}
void printList() {
for (int i = 0; i < 4; i++) {
System.out.println(list[i]);
}
}
@Override
public Iterator<T> iterator() {
Iterator<T> iter = new list.iterator();
return iter;
}
}
import java.util.Iterator;
公共类映射列表实现了Iterable{
T列表[];
公共映射列表(T arg1、T arg2、T arg3、T arg4){
list=(T[])新对象[4];
列表[0]=arg1;
列表[1]=arg2;
列表[2]=arg3;
列表[3]=arg4;
}
作废打印列表(){
对于(int i=0;i<4;i++){
System.out.println(列表[i]);
}
}
@凌驾
公共迭代器迭代器(){
迭代器iter=new list.Iterator();
返回iter;
}
}
这个零件不起作用
Iterator<T> iter = new list.iterator();
Iterator iter=new list.Iterator();
有什么想法吗
谢谢您需要实际重新实现
迭代器
接口;没有所谓的list.iterator()
你已经声明list
是一个数组,因此它没有成员iterator()
,也没有内部类<代码>迭代器以生成的实例
您可以实现基于where
hasNext()
returnsindex
和next()
returnslist[itIndex]
的索引,如果在hasNext()之后调用,则抛出NoSuchElementException
返回false。假设数组总是充满元素,最小迭代器实现可能如下所示:
@Override public Iterator<T> iterator()
{
final T[] list = this.list;
return new Iterator<T>()
{
int idx;
public boolean hasNext() { return idx < list.length; }
public T next() { return list[ idx++ ]; }
public void remove() { throw new UnsupportedOperationException(); }
};
}
@重写公共迭代器迭代器()
{
最终T[]列表=此.list;
返回新的迭代器()
{
int-idx;
公共布尔hasNext(){return idx
顺便说一下,您应该考虑将<代码>列表<代码>成员声明为私有的。直接从了解类型T(即特殊化的子类)的较窄定义的地方访问它可能会导致运行时出现ClassCastException,即使代码在编译时只需对构造函数中的
(T[])
类型发出警告即可。数组本身不提供迭代器,你必须实现一个。在您的情况下,一个简单的解决方案可能是采用数组.asList(…).iterator()
。