ArrayList中的forEach 方法(java8)

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 08:53   11   0

今天在看Arraylist原码的时候看到如下代码

 @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();
        }
    }

尝试了一下,原来java8中已经实现了lambda表达式。

以循环打印Arraylist中的值为例,在java8之前的写法是

for(Integer i : list) {
    System.out.println(i);
}

在java8中可以写成

list.forEach(x -> System.out.print(x));

确实优雅不少。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP