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()
returns
index
next()
returns
list[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()