今天在看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));
确实优雅不少。