📌  相关文章
📜  Java中的 CopyOnWriteArrayList forEach() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:01:52.370000             🧑  作者: Mango

Java中的 CopyOnWriteArrayList forEach() 方法及示例
介绍

CopyOnWriteArrayList 是 Java 中线程安全的数组实现类,可以支持并发读写,其内部采用了写时复制(Copy-On-Write)的机制,即在写操作时,先将原来的数组复制一份,然后进行写操作,最后将新数组赋值回原来的数组。

CopyOnWriteArrayList 的 forEach() 方法可以直接遍历整个列表,并对每个元素执行指定的操作。与传统的 ArrayList 直接遍历不同,CopyOnWriteArrayList 增加了对并发修改的支持,能够保证遍历时不会受到其他线程的修改影响。

语法

CopyOnWriteArrayList 的 forEach() 方法语法如下:

void forEach(Consumer<? super E> action)

其中,action 参数表示要执行的操作,该参数为 Consumer 类型,如果要执行多个操作,可以使用 andThen() 方法将多个 Consumer 类型的操作合并为一个,例如:

Consumer<E> action1 = e -> System.out.println(e);
Consumer<E> action2 = e -> System.out.println(e.getClass().getName());
action1.andThen(action2).accept(e);
示例

下面是一个示例程序,演示了如何使用 CopyOnWriteArrayList 的 forEach() 方法遍历数组,并对每个元素执行指定的操作:

import java.util.concurrent.CopyOnWriteArrayList;

public class CopyOnWriteArrayListDemo {
    public static void main(String[] args) {
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("Ruby");
        list.add("PHP");

        // 使用 forEach() 方法遍历数组
        list.forEach(e -> System.out.println(e));

        // 使用 andThen() 方法执行多个操作
        list.forEach(e -> System.out.println(e.toUpperCase()));
    }
}

运行结果如下:

Java
Python
Ruby
PHP
JAVA
PYTHON
RUBY
PHP

这段程序首先创建了一个 CopyOnWriteArrayList 实例,然后向列表中添加了四个字符串。接着,程序调用了列表的 forEach() 方法,并使用 Lambda 表达式将待执行的操作传递给了该方法,这里输出了列表中的每个元素。

接下来,程序使用 andThen() 方法将两个 Consumer 类型的操作合并为一个,该操作将每个元素转换为大写字母并输出。最后,程序运行结果输出了列表中的每个元素,并将每个元素转换为大写字母并输出。