ArrayList forEach()示例 之 Java 8

ArrayList forEach()方法对列表的每个元素执行参数声明/操作,直到所有元素都已处理或该操作引发异常为止。

默认情况下,对按迭代顺序执行的元素执行操作。

1。 ArrayList forEach()方法

如下所示,方法简单地遍历所有列表元素,并为每个元素调用action.accept()。这里的动作是Consumer接口的一个实例。

@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();
    }
}
  • 方法参数 –每个元素要执行的操作。
  • 方法返回 –无效。
  • 方法引发 – ConcurrentModificationException和NullPointerException。

2。 ArrayList forEach()示例

Java程序使用forEach()方法来迭代arraylist 。本示例迭代一个列表,并在列表中打印小写的字符串。

注意,我们如何在第二次迭代中将lambda表达式传递给forEach()语句。

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListExample 
{
    public static void main(String[] args) throws CloneNotSupportedException 
    {
       ArrayList<String> names = new ArrayList<>(Arrays.asList("A","B","C","D")); 
       
       //1 
       names.forEach(name -> System.out.println(name.toLowerCase()));

       //2
       Consumer<String> lambdaExpression = x -> System.out.println(x.toLowerCase());

       names.forEach(lambdaExpression);
    }
}

程序输出。

a
b
c
d

a
b
c
d

请注意,如果我们要有多个语句来处理列表值,则可以在语句中传递静态方法forEach()

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListExample 
{
    public static void main(String[] args) throws CloneNotSupportedException 
    {
        ArrayList<String> names = new ArrayList<>(Arrays.asList("A","B","C","D")); 
        
       names.forEach(name -> printString(name));
    }
    
    private static void printString(String str) {
        System.out.println(str.toLowerCase());
    }
}

程序输出。

a
b
c
d

阅读更多:

Java ArrayList指南
ArrayList Java文档

saigon has written 1445 articles

Leave a Reply