Java ArrayList.replaceAll()方法详解

IT 文章2年前 (2023)发布 小编
0 0 0

Java 中,ArrayList.replaceAll() 方法仅保留此列表中存在于指定方法参数集合中的元素。其余所有元素都从列表中移除。这个方法恰好与 removeAll() 方法相反。

1.ArrayList.replaceAll() API

replaceAll() 方法接受一个类型为 UnaryOperator 的单个参数。UnaryOperator 接口是一个具有名为 apply() 的单个抽象方法的函数接口,该方法返回与操作数相同类型的结果。我们通常在 lambda 表达式中看到 UnaryOperator 以形如 ‘x-> 对 x 进行某些操作’ 的方式工作。

public void replaceAll(UnaryOperator<E> operator);
  • 方法参数:UnaryOperator 表达式。
  • 方法返回:void
  • 方法可能抛出:如果在 replaceAll() 未完成时修改了列表,则可能抛出 ConcurrentModificationException

2.ArrayList.replaceAll() 示例

下面的 Java 程序使用 replaceAll() 方法使用 lambda 表达式将所有列表项更改为小写。

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

2.1. 使用内联表达式

我们可以在只需执行单个语句的情况下使用内联 lambda 表达式。

ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(alphabets); //[A, B, C, D, E]
alphabets.replaceAll( e -> e.toLowerCase() );
System.out.println(alphabets); //[a, b, c, d, e]

2.2. 自定义 UnaryOperator 的实现

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

class MyOperator implements UnaryOperator<String> {
  @Override
  public String apply(String t) {
    //自定义代码逻辑
    return t.toLowerCase();
  }
}

现在,我们可以如下使用 MyOperator

ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(alphabets); //[A, B, C, D, E]
alphabets.replaceAll( new MyOperator() );
System.out.println(alphabets); //[a, b, c, d, e]

这就是 Java 中的 ArrayList.replaceAll() 方法的全部内容。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

© 版权声明

相关文章

暂无评论

暂无评论...