ArrayList replaceAll() 方法

replaceAll() 方法采用 UnaryOperator 类型的单个参数。
UnaryOperator 接口是一个函数式接口,它有一个名为 apply 的抽象方法,该方法返回与操作数具有相同对象类型的结果。

我们已经看到 UnaryOperator在通常的 lambda 表达式中使用 'x-> do something with x'形式的单个参数。

public void replaceAll(UnaryOperator<E> operator) {
    Objects.requireNonNull(operator);
    final int expectedModCount = modCount;
    final int size = this.size;
    for (int i=0; modCount == expectedModCount && i < size; i++) {
        elementData[i] = operator.apply((E) elementData[i]);
    }
    if (modCount != expectedModCount) {
        throw new ConcurrentModificationException();
    }
    modCount++;
}

方法参数 UnaryOperator 表达式。

方法返回 void

如果列表被修改而 replaceAll()方法未完成,则方法抛出 ConcurrentModificationException

https://onitroad.com 更多教程

ArrayList replaceAll()方法 示例

Java 程序使用 replaceAll()方法使用 lambda 表达式转换数组列表的所有元素。

内联 lambda 表达式

如果我们只需要执行单个语句,我们可以使用内联 lambda 表达式。

import java.util.ArrayList;
import java.util.Arrays;
public class ArrayListExample 
{
    public static void main(String[] args) throws CloneNotSupportedException 
    {
        ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));

        System.out.println(alphabets);

        alphabets.replaceAll( e -> e.toLowerCase() );  

        System.out.println(alphabets);
    }
}

程序输出。

[A, B, C, D, E]
[a, b, c, d, e]

自定义 UnaryOperator 实现

创建一个实现 UnaryOperator的新类,以在 arraylist 的每个元素上执行更复杂的逻辑。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.UnaryOperator;
public class ArrayListExample 
{
    public static void main(String[] args) throws CloneNotSupportedException 
    {
        ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));

        System.out.println(alphabets);

        alphabets.replaceAll( new MyOperator() );  

        System.out.println(alphabets);
    }
}
class MyOperator implements UnaryOperator<String> 
{
    @Override
    public String apply(String t) {
        return t.toLowerCase();
    }
}

程序输出。

[A, B, C, D, E]
[a, b, c, d, e]
Java ArrayList replaceAll() 方法

ArrayList replaceAll() 方法使用参数指定的结果替换arraylist的每个元素。

日期:2020-09-17 00:09:56 来源:oir作者:oir