Iterator接口源码阅读

Iterator接口源码阅读


源码查看

package java.util;

import java.util.function.Consumer;

An iterator over a collection. Iterator takes the place of Enumeration in the Java Collections Framework. Iterators differ from enumerations in two ways:

  • Iterators allow the caller to remove elements from the underlying collection during the iteration with well-defined semantics.
  • Method names have been improved.

underlying:底层的 well-defined:明确定义的 semantics:语义

This interface is a member of the Java Collections Framework.

SInce: 1.2

Author: Josh Bloch

Type parameters: - the type of elements returned by this iterator.

public interface Iterator<E> {

Returns true if the iteration has more elements. (In other words, returns true if next would return an element rather than throwing an exception.)

Returns: true if the iteration has more elements.

boolean hasNext();

Rerurns the next element in the iteration.

Returns: the next element in the iteration

Throws: NoSuchElementException - if the iteration has no more elements.

E next();

Removes form the underlying collection the last element returned by this iterator (optional operation) This method can be called only once per call to next. The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is modified while the iteration is in progress in any way other than by calling this method.

Throws: UnspportedOperationException - if the remove operation is not supported by this iterator.

IllegalStateException - if the next method has not yet been called, or the remove method has already been called after the last call to the next method.

default void remove() {
  throw new UnsupportedOperationException("remove");
}

Performs the given action for each remaining element untill all elements have been processed or the action throws an exception. Actions are preformed in the order of iteration, if that order is specified. Exceptions thrown by the action are relayed to the caller.

perform:执行 remaining:剩余的 processed:处理 in the order of:按照…的顺序 relayed:传播

Params: action - The action to be performed for each element.

Throws: NullPointerException - if the specified action is null.

Since: 1.8

default void forEachRemaining(Consumer<? super E> action) {
  Objects.requireNonNull(action);
  while (hasNext())
      action.accept(next());
}

总结

  1. Iterator接口被用于替代Java集合框架中的Enumeration接口。Iterator接口在包含Enumeration接口方法的同时,还提供了可以在迭代过程中,对底层集合进行修改的***remove***方法。
  2. 调用next方法前,最好先调用hasNext方法判断本迭代器中是否还有元素没有迭代,避免抛出异常。
  3. remove方法将上次调用next方法返回的元素从底层集合中删除。
  4. 每成功调用一次next方法,允许且只允许调用一次remove方法。
next();// 返回元素A
next();// 返回元素B
remove();// 从底层集合删除元素B
remove();// IllegalStateException!!!
next();// 返回元素A
remove(); // 从底层集合删除元素A
next();// 返回元素B
remove();// 从底层集合删除元素B
  1. 对底层集合进行并发修改,可能会导致以有迭代器的行为变得难以预估。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值