首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java8内迭代

Java8内迭代
EN

Stack Overflow用户
提问于 2015-05-19 16:40:40
回答 1查看 423关注 0票数 8

java8 forEach方法是否使用迭代器?我把它搜得一干二净,找不到准确的。只有这样一个事实,即它将以相同的顺序迭代数据。

有小费吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-19 16:46:09

Iterable#forEach的默认实现基于迭代器。

代码语言:javascript
运行
复制
    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

但是在ArrayList中,不使用迭代器,而是在其内部数组上使用for循环。

代码语言:javascript
运行
复制
    @Override
    public void forEach(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        final int expectedModCount = modCount;
        @SuppressWarnings("unchecked")
        final E[] elementData = (E[]) this.elementData;
        final int size = this.size;
        for (int i=0; modCount == expectedModCount && i < size; i++) {
            action.accept(elementData[i]);
        }
        if (modCount != expectedModCount) {
            throw new ConcurrentModificationException();
        }
    }

因此,这取决于它的实施。

无论如何,由于此方法是在Iterable接口中声明的,所以所有可迭代性都有此方法。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30331427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档