ArrayList中的forEach 方法(java8)

今天在看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));

确实优雅不少。

猜你喜欢

转载自blog.csdn.net/weixin_42498646/article/details/87281098