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]
ArrayList replaceAll() 方法使用参数指定的结果替换arraylist的每个元素。
日期:2020-09-17 00:09:56 来源:oir作者:oir