小编Vin*_*Jia的帖子

当java.util.Iterator.remove()方法是'可选操作'时,它是什么意思?

我试图从Iterator对象中过滤特定元素,我可以通过iterator.remove()方法删除false元素.

这是我的方法存根:

    private static Iterator<A> process(Iterator<A> iter, Per p) {
        while(iter.hasNext()){
          A o = iter.next();
          if(p.per(o)){
             iter.remove();
          }
        }
        return iter;
    }
Run Code Online (Sandbox Code Playgroud)

我可以删除不相关的元素,但是当我查看Iterator.reomve()的java api时,它会说:

void remove():从底层集合中移除迭代器返回的最后一个元素(可选操作).每次调用next时,只能调用一次此方法.如果在迭代正在进行中以除调用此方法之外的任何方式修改基础集合,则未指定迭代器的行为.

我只是想知道为什么它是一个可选的操作?在使用remove()方法时让程序员更加小心是一个警告吗?还是有其他含义?

感谢大家提前寻求帮助.

我正在编译的整个代码在下面供您参考:

package com.test.iterator;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorTest {

    public static void main(String[] args) {
        final IteratorTest it = new IteratorTest();

        List<A> list = new ArrayList<A>(){{
            add(it.new A(10));
            add(it.new A(11));
            add(it.new A(12));
            add(it.new A(13));
            add(it.new A(16));
        }};

        Iterator<A> iter = list.iterator();
        iter = process(iter, …
Run Code Online (Sandbox Code Playgroud)

java iterator

7
推荐指数
1
解决办法
2969
查看次数

标签 统计

iterator ×1

java ×1