Java “我能不能子类?”;标准;arraylist迭代器?

Java “我能不能子类?”;标准;arraylist迭代器?,java,arraylist,iterator,subclass,Java,Arraylist,Iterator,Subclass,我需要迭代ArrayList的所有元素,最后一个除外。所以我想创建这样的迭代器。但是我不知道如何实现整个迭代器,我只需要重写hasNext()方法,所以我想对“标准”迭代器进行子类化。有什么方法可以做到这一点吗?您可以创建一个实现或接口的类,然后重写该方法。您可以创建一个实现或接口的类,然后重写该方法。我认为更好的方法是迭代ArrayList由您自己操作。ArrayList定义了两个方法,可以帮助您完成任务:get(int)和size() 您所要做的一切就是获取ArrayList(使用size(

我需要迭代
ArrayList
的所有元素,最后一个除外。所以我想创建这样的迭代器。但是我不知道如何实现整个迭代器,我只需要重写
hasNext()
方法,所以我想对“标准”迭代器进行子类化。有什么方法可以做到这一点吗?

您可以创建一个实现或接口的类,然后重写该方法。

您可以创建一个实现或接口的类,然后重写该方法。

我认为更好的方法是迭代
ArrayList
由您自己操作。
ArrayList
定义了两个方法,可以帮助您完成任务:
get(int)
size()

您所要做的一切就是获取
ArrayList
(使用
size()
)中的元素总数,然后使用
get()
方法在每个迭代中直接访问每个元素。您的代码如下所示:

    for(int i = 0; i < myList.size() - 1; i++){
       element = myList.get(i);
       //do something
    }
for(int i=0;i

现在牢记这一原则,您可以创建自己的类来迭代
ArrayList

我认为最好的方法是自己迭代
ArrayList
,而不是覆盖默认的迭代器。
ArrayList
定义了两个方法,可以帮助您完成任务:
get(int)
size()

您所要做的一切就是获取
ArrayList
(使用
size()
)中的元素总数,然后使用
get()
方法在每个迭代中直接访问每个元素。您的代码如下所示:

    for(int i = 0; i < myList.size() - 1; i++){
       element = myList.get(i);
       //do something
    }
for(int i=0;i

现在牢记这一原则,您可以创建自己的类来迭代
ArrayList

修改迭代器来执行此遍历,这会很奇怪。显然,要做的事情是按照您的意愿编写“算法”:

public static <T> void eachExceptLast(List<? extends T> list, Operation<T> op) {
     Iterator<T> iter = list.iterator();
     if (!iter.hasNext()) {
         return;
     }
     T item = iter.next();
     while (iter.hasNext()) {
         op.run(item);
         item = iter.next();
     }
}

publicstaticvoid eachExceptLast(List修改迭代器来执行此遍历是很奇怪的。显然要做的事情是按照您的意愿编写“算法”:

public static <T> void eachExceptLast(List<? extends T> list, Operation<T> op) {
     Iterator<T> iter = list.iterator();
     if (!iter.hasNext()) {
         return;
     }
     T item = iter.next();
     while (iter.hasNext()) {
         op.run(item);
         item = iter.next();
     }
}
publicstaticvoid eachExceptLast(列表